我与一个在Java中提供算术移位<<
,>>
的运算符混淆了
例如,我有这个二进制数:
0000 0101 // It is actually 5 in dec system
现在我想把这个数字向左移2个位置。我这样做(这只是移位的概念):
0000 0101 << 2
现在我不知道:如果我需要将高位移位2位并在右侧填充零或者我需要移位整数(101
)2个职位?
答案 0 :(得分:4)
第二个选项:)
例如,0110001 << 2 = 1000100
其他运营商是:
签名右移(>>
)。
0011001&gt;&gt; 2 = 0000110
1011001&gt;&gt; 2 = 1110110
最左边的位用作左边距。这样做是为了传播符号位(最高位)。
无符号右移(>>>
)
1110001&gt;&gt; 2 = 0011100
由于该数字被认为是无符号的,因此无需传播,只需用零填充!