逻辑右移、算术右移、循环右移的区别

2024-03-18

我一直在阅读经典的《黑客之乐》,但我很难理解逻辑右移、算术右移和右旋转之间的区别。如果疑问看起来太简单,请原谅。


首先记住机器字的大小是固定的。说 4,您的输入是:

+---+---+---+---+
| a | b | c | d |
+---+---+---+---+

然后将所有内容向左推一位即可得到:

+---+---+---+---+
| b | c | d | X |
+---+---+---+---+

问题 X 应该填什么?

  1. with a shift put 0
  2. with rotate put a

现在将所有内容向右推一位即可:

+---+---+---+---+
| X | a | b | c |
+---+---+---+---+

问题 X 应该填什么?

  1. with a 逻辑移位 put 0
  2. with an 算术移位 put a
  3. with rotate put d

Roughly.

逻辑移位对应于(左移)乘以 2,(右移)整数除以 2。

算术移位与有符号数的 2 补码表示有关。在这种表示中,符号是最左边的位,然后算术移位保留符号(这称为符号扩展)。

Rotate没有普通的数学意义,即使在计算机中也几乎是一个过时的操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

逻辑右移、算术右移、循环右移的区别 的相关文章

随机推荐