取反,位运算

这篇博客详细介绍了位运算,包括取反操作。通过示例解释了如何从十进制转换为二进制负数,以及如何从二进制负数还原回十进制。同时,讲解了同或(&)和异或(|)的运算规则,并通过实例展示了它们的用法。此外,还探讨了左移(<<)和右移(>>)运算符的功能,以及它们在数值计算中的应用。
摘要由CSDN通过智能技术生成
''
        位运算:争对二进制进行的运算
         取反:~
        1.已知十进制负数,求二进制负数:
        步骤:1.正数的原码  2.原码取反 3,二进制 +1---》得到的二进制就是负数
            例如:-7:
            1.求+7的原码: 0000 0111 原码
            2.原码取反:   1111 1000
            3.加一:      1111 1001
        2.已知二进制的负数,求对应的十进制
        (判断负的二进制的依据,看最高位:1111 1010,最高位1则为负数,最高位为0则为正数)
         步骤:1已知二进制(负) 2.二进制补码 -1 3.取反 4.得到原码 转换成 十进制 + 负号 -
         例如:1111 1010
            1.已知补码:      1111 1010
            2.二进制补码-1:  1111 1001
            3.取反:         0000 0110
            4.原码:         0000 0110 转换 6 加负号 -6
        3. ~ 4 就是把4的二进制取反
            1.求正数原码:    0000 0100
            2.取反 - 1:     1111 1011  -1  1111 1010
            3.在取反 得原码 :0000  0101  得  5 加-  -5


            同或:& 上下数位一样为 1,不同为 0
            异或:| 上下数位一样为 0,不同为 1
'''

 同或,异或

n1 = 0b0110  # 6
n2 = 0b0010  # 2
print(n1 & n2)
print(n1 | n2)
print('-' * 20)
a = 5
b = 9
print(a & b)
print(a | b)
'''
n1 = 0b0110     #6      6 0110          5 & 9   0101              0101 
n2 = 0b0010     #2      2 0010                  1001              1001
0&0  --->0          异或: 0100               1&1 --->1        异或 1101
1&1  --->1                                   0&0 --->0      
1&0  --->0                                   1&0 --->0  
0&0  --->0                                   0&1 --->0  
ob 0010--->2
'''

左移符,右移符

n = 12  # 0000 1100
print(n << 1)  # 0000 1100 补0 00001 1000
print(n << 2)  # 12*2*2
print(n << 3)  # 12*2*2*2
print('-' * 20)  #
print(n >> 1)  # 12//2
print(n >> 2)  # 12//2//2
print(n >> 3)  # 12//2//2//2
print('-' * 20)
a = 89
b = 93
print(a >> 5)
print(b << 3)
'''
> < 比较符参与运算的时候 默认True为 1,False为0 可以进行运算
'''
a=1
b=2
x=50
print(b>a+(x<a+b)) #先比较(x<a+b)50<3 为假False ,b>a+False(0)  b>a+0

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值