我目前正在研究基本的二进制乘法器,我们仅限于使用逻辑门(AND / OR / NAND / NOR / XOR)。我试图在下面的声明列表,但无法弄清楚如果没有if。
将如何进行(x代表被乘数,y代表乘数)
if ((y & 1) != 0) product = add(product,x);
答案 0 :(得分:0)
在这种特殊情况下,
product += x & (-(y & 1));
可以工作,其中bit-twiddling相当于将所有x
与y
的位进行AND运算然后相加。
答案 1 :(得分:0)
假设add
做了它的名字所暗示的,那么
product = add(product,(y & 1) * x);