如何在 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)。
我不明白这个表达式是如何工作的。
~(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)。