gpt4 book ai didi

operators - 使用 ALU 运算符向右移一位?

转载 作者:行者123 更新时间:2023-12-02 02:36:13 26 4
gpt4 key购买 nike

我想知道是否有一种仅使用 ALU 运算符(NOT、OR、AND、XOR、ADD、SUB)对 8 位二进制值执行右移的有效方法

Example:

input: 00110101
output: 10011010

我已经能够通过将 8 位二进制值与自身相加来实现左移,因为左移相当于乘以 2。但是,我想不出一种方法来实现右移。

到目前为止,我想出的唯一方法是只执行 7 次左桶形移位。这是唯一的方法吗?

最佳答案

很明显,这不能用 {AND, OR, XOR, NOT} 来完成。对于所有这些运算符,outbit[N] 取决于 inbit1[N] 和 inbit2[N] 。 AND 添加对 inbit1[N]..inbit1[0] 和 inbit2[N]..inbit2[0] 的依赖。但是,在您的情况下,您需要依赖 inbit[N+1]。因此,如果有任何解决方案,它必须包含一个 SUB。

但是,A - B 只是 A + (-B)A + ((B XOR 11111111) +1) .因此,如果存在使用 SUB 的解决方案,则可以将其改写为使用 ADD 和 XOR 的解决方案。正如我们所展示的,这些运算符是不够的。因此,集合 {ADD, OR, XOR, NOT, ADD, SUB} 也是不够的。

关于operators - 使用 ALU 运算符向右移一位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1552740/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com