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

Eup*_*mia 2 c# bit-manipulation bit-shift bit bitwise-operators

我不明白这个表达式是如何工作的.

~(1 << 1) = -3
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 11

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

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

00000000_00000000_00000000_00000010
Run Code Online (Sandbox Code Playgroud)

因此,按位反转是:

11111111_11111111_11111111_11111101
Run Code Online (Sandbox Code Playgroud)

...这是-3的二进制表示(32位二进制补码).