如何在C#中使用带位移运算符的按位NOT运算符?

时间:2017-06-12 13:54:28

标签: c# bit-manipulation bitwise-operators bit bit-shift

我不明白这个表达是如何运作的。

~(1 << 1) = -3

我所理解的是1&lt;&lt; 1的二进制值为10,基数为10的值。如何使用NOT运算符得到-3?移位运算符如何与NOT运算符一起使用?

1 个答案:

答案 0 :(得分:11)

按位逆运算符与此处的移位完全分开。

您已经开始输入10(二进制) - 它具有完整的32位表示

00000000_00000000_00000000_00000010

因此,按位反转是:

11111111_11111111_11111111_11111101

...这是-3的二进制表示(在32位two's complement中)。