python数值取反问题~

在python中,用取反符号~得到的并不是我们想象中的结果,总结一下规律,就是   (取反后的值)=  -(取反前的值)-1

下面来分析一下,例如对1取反,1的8位二进制表示为:0000 0001 ,  取反后的结果是:1111 1110, 对于计算机来说,二进制以1开头表示的是负数, 所以这个1111 1110到底表示的是什么负值呢,想要知道这个值,可以求它的补码,即先取反码 :0000 0001, 再加1:0000 0010,说明 1111 1110 的原码为 0000 0010 也就是正数 2, 所以 1111 1110代表的就是负数 -2 

下面再举个例如:对 -2 取反, -2的二进制表示为 2的补码,即 0000 0010 > 1111 1101 > 1111 1110 ,-2的二进制就表示为1111 1110, 对它取反得到 0000 0001,显而易见,取反后的值为1 , 所以 ~(-2)= 1  ,  ~1=-2

总结出来就是:(取反后的值)=  -(取反前的值)-1

猜你喜欢

转载自blog.csdn.net/m0_37827405/article/details/80907285
今日推荐