按位取反运算

今天深入探讨了一下按位取反相关知识:
以前学习这个走入了一个误区,认为一个自然数取反后得到的是它的十进制数值的相反值,其实不然,二进制和十进制取反还是有很大的不同的
例如:~18取反并不等于-18 而是等于-19
~18 --> ~ 00010010B
按位取反后得到11101101B

二级制负值转十进制真值符号值(最高位)不变,其他位取反
得到10010010B
转换为十进制为 -19
注意的是~0=11111111B 所以 ~0=-1
11111111+1=0 与我们十进制-1+1=0相似
由此可推演10000000的真值为-128

可以简单的理解就是从-128开始一直加1 直到等于0是的就为负值的容量,所以二进制相对于十进制排序为10000000 10000001 …11111111 00000000 00000001…01111111 ----> -128----127

你可能感兴趣的:(按位取反运算)