问题
有人可以帮我弄清楚37 * x
只使用一行代码,只使用位移和添加吗?
测试
我认为它是(x<<5) + (x<<2)
+ x因为:
37 = 32 + 4 + 1
基本上是2^5 + 2^2 + 2^0
我被告知这是错的。有人可以解释一下原因吗?谢谢!
答案 0 :(得分:0)
我认为你所做的是正确的,但也许你必须看看你使用过的数据类型。因此,位移操作不会导致溢出,并且您的单词的某些信息会从变量中移出。例如,如果您有一个8位数字10d:
0000 1010 << 5 --> 1 0100 0000
此数字不适合8位数,因此结果为
0100 0000
这是一个与您预期不同的值。如果您向我们提供有关您的实施的更多详细信息,我们可以查看它。