1

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

4

3 回答 3

6

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

例子

8 位右移使事情变得简单。

示例 1

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

示例 2

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

请注意,当符号位为 时,这两个操作是相同的0

于 2010-10-22T04:44:55.200 回答
3

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

于 2010-10-22T04:45:19.223 回答
1

一个(算术移位)保留符号(通过用先前存在的内容的副本填充空出的最左边的位位置);另一个没有(逻辑移位),而是总是用零填充。

于 2010-10-22T04:45:13.500 回答