原码,反码,补码

原码,反码,补码

码的注意事项

1.二进制的最高位是符号位:0表示正数,1表示负数
2.正数的原码,反码,补码都一样(三码合一)
3.负数的反码=它的反码+1 负数的反码=它的补码-1
5.0的反码和补码都是0
6.在计算中,都是以补码的方式来运算的

位运算符一览

~ 按位取反
<< >> 移位
& 按位与
^ 按位异或
| 按位或
1.~按位取反
~规则:对数据的每一个二进制位取反
~-2: -2的原码:1000 0010
-2的反码:1111 1101
-2的补码:1111 1110
按位取反:0000 0001(正数 取反后的补码)
所以-2的反码:0000 0001
~2: 2的补码:0000 0010
2的补码:1111 1101
按位取反:1111 1100
所以2的反码:1000 0011
2.&按位与
参与运算的两个值,如果两个相位都为1,则该位的结果为1,否则为0
2&3:
2的补码:0000 0010
3的补码:0000 0011
结果为补码:0000 0010
所以结果时:0000 0010
3.^按位异或
规则:当两个对应的二进制相异时,结果为1
2^3:
2的补码:0000 0010
-3的补码:1000 0011
-3的反码:1111 1100
-3的补码:1111 1101
2^3结果的补码:1111 1111
2^3结果的反码:1111 1110
2^3结果的原码:1000 0001
4.|按位或
规则:只要对应的两个的二进制有一个为1,结果为1
2|3:
2的补码:0000 0010
3的补码:0000 0011
2|3结果的补码:0000 0011
2|3结果的原码:0000 0011
5.<<左移
规则:运算数的各二进制全部左移若干位,由<<右边的数指定移动的位数,符号位不变,高位丢弃,低位补0
实例:-5<<1:
-5的原码:1000 0101
-5的反码:1111 1010
-5的补码:1111 1011
左移一位:1111 0110
结果的反码:1111 0101
结果的反码:1000 1010

6.<<左移
规则:把>>左边的运算数的各二进制全部右移若干位,>>右边的是数指定移动的位数,低位溢出,符号位不变,并把符号位补溢出的高位。
5>>1:
5的补码:0000 0101
左移一位:0000 0010
结果三码归一:0000 0010
-5>>1:
-5的补码:1111 1011
左移一位:1111 1101
结果的反码:1111 1100
结果的原码:1000 0011

# 位运算的案例
print(~-2)
print(~2)
print(2 & 3)
print(2 ^ -3)
print(2 | 3)
print(5 << 1)
print(-5 << 1)
print(5 >> 1)
print(-5 >> 1)

运行结果:
在这里插入图片描述

a = 1 >> 2  # 0
b = -1 >> 2  # -1
c = 1 << 2  # 4
d = -1 << 2  # -4

print("a=", a)
print("b=", b)
print("c=", c)
print("d=", d)
print("-------")
print(~2)  # -3
print(2 & 3)  # 2
print(2 | 3)  # 3
print(~-5)  # 4
print(13 & 7)  # 5
print(5 | 4)  # 5
print(-3 ^ 3)  # -2

运行结果:
在这里插入图片描述

  • 35
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值