算术移位

时间:2010-10-22 04:43:21

标签: objective-c bit-shift

逻辑右移和算术右移有什么区别?

3 个答案:

答案 0 :(得分:6)

算术右移重复符号位。逻辑移位忽略符号位,最左边的位变为0

示例

8位右移以保持简单。

示例1

11100101原始位
11110010算术右移
01110010逻辑右移

示例2

00011101原始位
00001110算术右移
00001110逻辑右移

请注意,当符号位为0时,两个操作都相同。

答案 1 :(得分:3)

LSR将位向右移位并用0填充MSb.ASR将位向右移位并用移位前的任何内容填充MSb,这保留了有符号数的“除以2”机制。 / p>

答案 2 :(得分:1)

一个(算术移位)保留符号(通过填充空出的最左位位置与之前存在的重复);另一个没有(逻辑移位),而是总是用零填充。