【发布时间】:2011-03-01 02:00:55
【问题描述】:
我正在实现一个 16 位位移器,将位向左旋转 r。我只能访问AND、NOT 和ADD 操作。有 3 个条件码:negative、zero 和 positive,当您使用这些操作时会设置它们。
这是我的方法:
-
如果最高有效位是
1,则AND带有1000 0000 0000 0000的数字将条件代码设置为正。 -
ADD本身的号码。这会将位向左移动一位。 - 如果 MSB 为
1,则结果为ADD1。 - 循环执行步骤 (1)-(3) r 次。
还有其他有效的方法可以做到这一点吗?
【问题讨论】:
-
嗯,很有趣,但可能是一个 SO 问题。
-
逻辑左移和算术左移都将新的 LSB 设置为 0。您的方法是向左旋转(或循环移位)。
-
或代码高尔夫和编程难题问题。 codegolf.stackexchange.com
-
@RD01 是的,抱歉。这就是我想要的。
-
@Orbling 我已将其标记为“离题——属于 SO”
标签: assembly