Max*_*xpm 19 bitwise-operators
为什么按位NOT运算符(~在大多数语言中)转换如下所示的值:
-2 -> 1
-1 -> 0
0 -> -1
1 -> -2
不应该-2转换为2,1转换为-1等?
Ebo*_*ike 12
如果你用二进制看它会很有帮助.
首先,如您所知,负数表示为(最高可能的无符号数加1减去值).因此,16位整数中的-1(无符号值最高为65535)将为65536-1 = 65535,即十六进制为0xffff,或者1111 1111 1111 1111为二进制.
所以:
1为二进制= 0000 0000 0000 0001
不会导致所有位1111 1111 1111 1110.以十进制表示的是65534.而65536减去65535是1,所以这是-1.