正数取反
例如:a=60,60的二进制是0011 1100(最前面的0表示正数),,,(a取反~a ) 输出结果 -61 ,二进制解释:首先对数据的每个二进制位取反,即把1变为0,把0变为1,得 1100 0011(最前面的1表示负数),然后求在一个有符号二进制数的补码形式
(方法是:负数的补码 = {原码符号位不变} + {数值位按位取反后+1}),也就是10111100,加一,就是10111101,即-61
负数取反
-2 二进制是110,取反是001,其补码还是001,即1x=-2,-x-1=1
(正数的补码就是原码)
综上,取反就是先按位取反,然后求补码(正数负数求补码不一样)
或者直接用一个简单的办法:a=x,不论a是正是负
将a取反,~a=-x-1
np.uint8(~a)=255-x