当前位置:  开发笔记 > 编程语言 > 正文

如何在不使用c中的算术运算符的情况下将给定数乘以2?

如何解决《如何在不使用c中的算术运算符的情况下将给定数乘以2?》经验,为你挑选了4个好方法。

如何在不使用c语言的算术运算符的情况下将给定数字乘以2?



1> kgiannakakis..:

使用bit wise <<运算符:

x = x << 1;

这适用于整数和长数(不是浮点数).

它基本上将二进制内容向左移动一个位置,相当于乘以2



2> Brian Rasmus..:

左移.

但是你为什么要那样做呢?将这种优化留给编译器.

维基百科上的运营商列表和大量示例.


在我的回答之后添加了这个标签,但即使对于家庭作业,最好指出这不是在高级语言中进行乘法的正确方法.

3> Peter Gibson..:

只是为了扩展kgiannakakis帖子:

移位运算符的<<工作原理是因为它在二进制级别上移位 - 实际上在基数2中移动.正如将数字向左移动十进制(基数为10)与乘以10相同.例如:

23 (move to left one digit) = 230 = 23 * 10

对于示例(使用前缀0b表示二进制数):

    3 * 2 = 6
0b11 << 1 = 0b110

通过其他数字移位相当于乘以2'n'次,或乘以2到n次幂(2 ^ n)

   3 * 8 =    3 * 2^3    = 24
0b11 * 8 =   0b11 << 3   = 0b11000 (note the trailing zeros)

并以十进制形式完成它的示例:

23 (move to left 3 places) = 23 * 1000 = 23 * 10^3 = 23000



4> Alphaneo..:

警告:移位可能对签名变量不起作用,

int x;
int tmp;

if (x < 0) {

   tmp = -x;
   tmp = tmp << 1;
   x = -tmp;
}
else {

   x = x << 1;
}

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有