如何在 C# 中将按位非运算符与移位运算符一起使用?

How to use bitwise NOT operator with shift operator in C#?

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

~(1 << 1) = -3

我的理解是 1 << 1 在二进制中的值为 10,在基数为 10 中的值为 2。它是如何通过 NOT 运算符得到 -3 的?移位运算符如何与 NOT 运算符一起使用?

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

您从输入 10(二进制)开始 - 它具有

的完整 32 位表示
00000000_00000000_00000000_00000010

因此按位取反是:

11111111_11111111_11111111_11111101

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