我对提供算术移位的运算符感到困惑 <<
, >>
在Java中
例如我有这个二进制数:
0000 0101 // It is actually 5 in dec system
现在我想把这个数字向左移动 2 个位置。我正在这样做(这只是移位的概念):
0000 0101 << 2
现在我不知道:是否需要将高位移动 2 个位置并在右侧填充零或者我需要将整数( 101
)移动2个位置?
最佳答案
第二个选项:)
例如,0110001 << 2 = 1000100
其他运算符是:
有符号右移 (
>>
)。0011001 >> 2 = 0000110
1011001 >> 2 = 1110110最左边的位用作左填充。这样做是为了传播符号位(最高位)。
无符号右移 (
>>>
)1110001 >> 2 = 0011100
由于该数字被视为无符号,因此无需传播任何内容,只需用零填充即可!
关于java - 哪一位实际移位了 << 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19667231/