还在为原码、反码、补码和位运算搞得头昏脑涨?点这里,还你清析脑回路

🌤前言:

大家好,今天是学习总结篇。

对于位运算,正在我们平时的编程中比较少见,但是位运算却是非常基础的python内容。灵活的使用位运算可以更好的完善自己的程序,提高运行速度。比如我们判断一个数n是不是偶数我们一般使用求余算法n%2是否=0,使用位运算我们可以写成n&1,如果n&1=0那么n是偶数,如果n&1=1则n为奇数。我们知道计算机内部都是进行二进制的计算,计算其他进制数时计算机需要将其转化为二进制在进行计算,而位运算即是二进制的运算,相对其他进制的运算计算速度会更快,所以不要错过位运算的妙处。

目录

🌤前言:

🌟认识原码、反码、补码

💫1.对于正数

💫2.对于负数

💫3.负数原码转补码的规则

🌟认识位运算符

🌟了解位运算

⭐按位与:&

✨模拟按位与运算

⭐按位或:|

✨模拟按位或运算

⭐按位异或:^

✨模拟按位异或运算

⭐按位取反:~

✨模拟按位取反运算

⭐按位左移:<<

✨模拟按位左移运算

⭐按位右移:>>

✨模拟按位右移运算


🌟认识原码、反码、补码

💫1.对于正数

原码=反码=补码

----------------------------

如6对应的二进制为:110

110的原码:110

110的补码:110

110的反码:110

计算机中一个字节有八位二进制,对于一个字节八位二进制数,6的二进制一个字节(八位)完整表示为00000110,6的二进制二个字节(16位)完整表示为0000000000000110,以此类推。这里因为6为正数所以略写为110

💫2.对于负数

原码=原码

反码:符号位(二进制最左一位)不变,其他位取反

补码:反码+1

对于符号位,0代表正数,1代表负数

-------------------------------------------

如-6对应的二进制为:10000110(1为符号位,表示负数)

10000110的原码:10000110

10000110的反码:11111001

10000110的补码:11111001 + 1=11111010

💫3.负数原码转补码的规则

原码=补码符号位不变,其他位取反后+1

---------------------------------------

例如如-6对应的二进制为:10000110(1为符号位,表示负数)

10000110的补码:11111010

11111001符号位不变取反:10000101

+1:10000110

🌟认识位运算符

我们先来认识位运算符

位运算符运算符名称书写格式举例
&按位与a&b2&3=2,3&2=2
|按位或a|b2|3=3, 3|2=3
^按位异或a^b2^3=1,3^2=1
~按位取反~a~2=-3, ~3=-4
<<按位左移a<<b2<<3=16, 3<<2=12
>>按位右移a>>b2>>3=0, 3>>2=0

注:表格举例一栏均为十进制位运算

位运算是对二进制进行运算,计算其他进制数时先将其转化为二进制,运算完成后转化为十进制输出

🌟了解位运算

⭐按位与:&

二进制按位与&的运算规则:

----------------------------------------------

  • 0&0=0,0&1=0,1&0=0
  • 1&1=1

-----------------------------------------------

举例(十进制)6&4

6对应的二进制为:110

4对应的二进制为:100

✨模拟按位与运算

🌈 按位与运算巧计:有0则0

即0&n=0,其他都为1。n对于二进制十进制都适用

⭐按位或:|

二进制按位或|的运算规则:

----------------------------------------------

  • 0|0=0,0|1=1,1|0=1
  • 1|1=1

-----------------------------------------------

举例(十进制)6|4

6对应的二进制为:110

4对应的二进制为:100

✨模拟按位或运算

🌈 按位与运算巧计:有1则1

即1&n=1,(n为0或1),其他都位0

⭐按位异或:^

二进制按位异或^的运算规则:

----------------------------------------------

  • 0^0=0,0^1=1,1^0=1
  • 1^1=0

-----------------------------------------------

举例(十进制)6^4

6对应的二进制为:110

4对应的二进制为:100

✨模拟按位异或运算

🌈 按位疑惑运算巧计:相同为0,不同为1

即0^1=1, 1^0=1.    0^0=0, 1^1=0

⭐按位取反:~

二进制按位取反~的运算规则:

----------------------------------------------

  • ~0=-1
  • ~1=-2

-----------------------------------------------

举例(十进制)~5

5对应的二进制为:00000101

✨模拟按位取反运算

~5=00000101取反:11111010(得反码,最左一位为1,表示负数)

为了得到结果也就是原码我们按照负数情况转换成原码

11111010符号位不变取反:10000101

+1:10000101 + 1= 10000110(=-6)

⭐按位左移:<<

二进制按位左移<<的运算规则:

----------------------------------------------

  • 左移相当于最右位补0
  • 左移结果公式a<<b   =    a*2^{b}

-----------------------------------------------

✨模拟按位左移运算

举例(十进制)6<<2

6对应的二进制为:110

110左移(最右补2个0):11000(24=十进制)

由公式 6*2^{2}=24

如果补的0使得对应2进制超过一个字节八位数怎么办?

我们“补字节”照样按照二进制左移进行计算

如6<<6

110左移6位后:110 000 000(=384十进制)

⭐按位右移:>>

二进制按位右移>>的运算规则:

----------------------------------------------

  • 右移相当于将整体右移
  • 右移结果公式a>>b   =    a\div2 ^{b}

-----------------------------------------------

✨模拟按位右移运算

举例(十进制)6>>2

6对应的二进制为:110

110右移(整体右移2位):001(24=十进制)

如果整体右移超过最大右移位数怎么办?

如果整体右移超过最大右移位数那么结果等于零

如6>>3

110右移(整体右移3位):000(0=十进制)

可以理解为右移时右边界无法移动,移动时越过右边界时则将其去除,右移左边空出的位置由0代替。

对此原码、反码、补码和位运算的介绍完毕。

今天就到这,明天见。🚀

❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄end❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄❄

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亖夕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值