Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我与在 Java中提供算术移位<<的运算符混淆了>>
<<
>>
例如我有这个二进制数:
0000 0101 // It is actually 5 in dec system
现在我想将这个数字向左移动 2 个位置。我正在这样做(这只是移位的概念):
0000 0101 << 2
现在我不知道:如果我需要将高位移动 2 个位置并在右侧填充零,或者我需要将整数 ( 101) 移动 2 个位置?
101
第二种选择:) 例如,0110001 << 2 = 1000100
0110001 << 2 = 1000100
其他运营商是:
有符号右移 ( >>)。
0011001 >> 2 = 0000110 1011001 >> 2 = 1110110
最左边的位用作左填充。这样做是为了传播符号位(最高位)。
无符号右移 ( >>>)
>>>
1110001 >> 2 = 0011100
由于该数字被认为是无符号的,因此没有什么可以传播的,只需用零填充!