Jav*_*ram 37 .net c# bitwise-operators twos-complement conditional-statements
无法理解.为什么输出"平等"
码:
if (-3 == ~2)
Console.WriteLine("equal");
else
Console.WriteLine("not equal");
Run Code Online (Sandbox Code Playgroud)
输出:
equal
Run Code Online (Sandbox Code Playgroud)
Dan*_*olo 61
因为二进制补码运算就是这样
来自维基百科页面并进行了扩展:
Most
Significant
Bit 6 5 4 3 2 1 0 Value
0 0 0 0 0 0 1 1 3
0 0 0 0 0 0 1 0 2
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 -1
1 1 1 1 1 1 1 0 -2
1 1 1 1 1 1 0 1 -3
1 1 1 1 1 1 0 0 -4
Run Code Online (Sandbox Code Playgroud)
所以你得到:
0 0 0 0 0 0 1 0 = 2
1 1 1 1 1 1 0 1 = -3
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,所有位都被翻转,这就是按位NOT运算符(~)的作用.