Bitshift乘法

时间:2015-12-07 07:31:30

标签: bit-shift multiplication

问题

有人可以帮我弄清楚37 * x只使用一行代码,只使用位移和添加吗?

测试

我认为它是(x<<5) + (x<<2) + x因为:

37 = 32 + 4 + 1

基本上是2^5 + 2^2 + 2^0

我被告知这是错的。有人可以解释一下原因吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我认为你所做的是正确的,但也许你必须看看你使用过的数据类型。因此,位移操作不会导致溢出,并且您的单词的某些信息会从变量中移出。例如,如果您有一个8位数字10d:

0000 1010 << 5 --> 1 0100 0000

此数字不适合8位数,因此结果为

0100 0000

这是一个与您预期不同的值。如果您向我们提供有关您的实施的更多详细信息,我们可以查看它。