我不明白这个表达是如何运作的。
~(1 << 1) = -3
我所理解的是1&lt;&lt; 1的二进制值为10,基数为10的值。如何使用NOT运算符得到-3?移位运算符如何与NOT运算符一起使用?
答案 0 :(得分:11)
按位逆运算符与此处的移位完全分开。
您已经开始输入10(二进制) - 它具有完整的32位表示
00000000_00000000_00000000_00000010
因此,按位反转是:
11111111_11111111_11111111_11111101
...这是-3的二进制表示(在32位two's complement中)。