整数变量的替代方法乘以c中的数字

时间:2014-03-11 18:53:01

标签: c

在c程序中变量可以乘以8的方式有多少?我知道

1. a*8
2. a<<8 ? 

还有其他方法吗?这是技术能力测试问题。

3 个答案:

答案 0 :(得分:0)

a<<8a * 8不同。

a<<1相当于a*2 a<<2相当于a*4 a<<3相当于a*8 a<<8相当于a*256

如果你真的想要其他方式,一些迂腐的东西:

a+a+a+a + a+a+a+a
a<<1 + a<<1 + a<<1 + a<<1
a<<2 * 2
2*(a<<1 + a<<1)
2*(a<<1)*2
a*2*2*2
a*(2<<2)
a*(4<<1)

答案 1 :(得分:0)

以来,你可以将它自己添加7次

8 * a

等于

a + a + a + a + a + a + a + a + a。

答案 2 :(得分:0)

当你说&#34;变量&#34;时,你还需要考虑该变量的类型。

位移仅适用于无符号变量或有符号变量,前提是该值不是负数,如果数字足够高,将其乘以8会使目标变量溢出,即使其中一些也可能失败。数据类型。你的位移通常也不会在浮点上工作。

我喜欢上面的一些答案,让我轻笑: - )