关于 位运算中 取反~ 的计算原理说明(肯定看得懂系列)

按位运算中取反的计算原理


1:前言


前言:二进制按位运算包括有 按位或&,按位与|,按位异或^,按位取反~, 还有左移<<, 右移>> 等操作,都是非常容易理解和应用的。
除了本篇要讲的 按位取反操作,相信各位在第一次使用这个运算的时候一定都被它的密之规则迷惑,输出结果与我们的预期结果不一,虽然在多次试验之后你记住了他的输出结果的对应规则,但可能对运算规则不是很熟悉。
本篇主旨:不会用的学会用;会用的了解下原理;原理也会的帮我看看我有没有说错


2:例子与解析

先看来一个例子

a  = [199 , 60 , -64]
print(a)                    #[199, 60, -64]
for i in range(len(a)):
    print(~a[i] , end=' ')  #-200, -61, 63 
  • 首先我们来看输出的对应规则 199 变成了 -200 ; 60 变成了 -61 ; -64 变成了 63,这些都是直观可以看到的
  • 然后我们来分别解释一下规则
  • 一 :199对应二进制是 11000111
    二:按照正常逻辑按位取反嘛,那就变成了 00111000
    三:然后代入计算规则,公式为: -(~00111000+1)。不要忘记了括号外的负号和括号内的取反
    四:公式计算过程,第一步 -(11000111+1)。第二步 -(11001000)。第三步 -11001000
    五:现在我们发现 -11001000 对应的十进制数果然是 -200
  • 一 :60对应二进制是 00111100
    二:按照正常逻辑按位取反嘛,那就变成了 11000011
    三:然后代入计算规则,公式为: -(~11000011+1)。不要忘记了括号外的负号和括号内的取反
    四:公式计算过程,第一步 -(00111100+1)。第二步 -(00111101)。第三步 -00111101
    五:现在我们发现 -00111101 对应的十进制数果然是 -61
  • 一 :-64对应二进制是 -01000000
    二:按照正常逻辑按位取反嘛,那就变成了 -10111111
    三:然后代入计算规则,公式为: -(~-10111111+1)。不要忘记了括号外的负号和括号内的取反
    四:公式计算过程,第一步 -(-01000000+1)。第二步 -(-00111111)。第三步 00111111
    五:现在我们发现 00111111 对应的十进制数果然是 63

3:公式总结

公式总结: -(~反码+1)
由于 ~反码=源码
所以公式化简为:-(源码+1)


  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值