我一直在阅读经典的《黑客之乐》,但我很难理解逻辑右移、算术右移和右旋转之间的区别。如果疑问看起来太简单,请原谅。
首先记住机器字的大小是固定的。说 4,您的输入是:
+---+---+---+---+
| a | b | c | d |
+---+---+---+---+
然后将所有内容向左推一位即可得到:
+---+---+---+---+
| b | c | d | X |
+---+---+---+---+
问题 X 应该填什么?
- with a shift put 0
- with rotate put
a
现在将所有内容向右推一位即可:
+---+---+---+---+
| X | a | b | c |
+---+---+---+---+
问题 X 应该填什么?
- with a 逻辑移位 put 0
- with an 算术移位 put
a
- with rotate put
d
Roughly.
逻辑移位对应于(左移)乘以 2,(右移)整数除以 2。
算术移位与有符号数的 2 补码表示有关。在这种表示中,符号是最左边的位,然后算术移位保留符号(这称为符号扩展)。
Rotate没有普通的数学意义,即使在计算机中也几乎是一个过时的操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)