【发布时间】:2009-10-12 04:45:15
【问题描述】:
我想知道是否有一种仅使用 ALU 运算符(NOT、OR、AND、XOR、ADD、SUB)对 8 位二进制值执行右移的有效方法
Example:
input: 00110101
output: 10011010
我已经能够通过将 8 位二进制值与自身相加来实现左移,因为左移相当于乘以 2。但是,我想不出一种方法来实现右移。
到目前为止,我想出的唯一方法是只执行 7 次左桶移位。这是唯一的方法吗?
【问题讨论】:
-
可能你想要旋转。轮换与轮换不同。
-
嗯,这叫向右旋转,而不是shift。
-
左移实现是真正的移位,因为它移入 0 并丢弃(溢出)最高位。
-
可能只是词汇问题,或者我的解释有点混乱。这是我试图解释的维基。 en.wikipedia.org/wiki/Barrel_shifter
标签: operators bit-shift bitwise-operators