整理下C++位运算跟乘除法的关系

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pengnanzheng/article/details/88640979

一:乘法
12 * 2 = 12 << 1
12 * 4 = 12 << 2
12 * 8 = 12 << 3
12 * 16 = 12 << 4
12 * 32 = 12 << 5
12 * 64 = 12 << 6
12 * 128 = 12 << 7
12 * 256 = 12 << 8
二:除法
12 / 2 = 12 >> 1
12 / 4 = 12 >> 2
12 / 8 = 12 >> 3
12 / 16 = 12 >> 4
12 / 32 = 12 >> 5
12 / 64 = 12 >> 6
12 / 128 = 12 >> 7
12 / 256 = 12 >> 8
使用位移运算可以提高因乘除运算带来的效率的问题,它的缺点是存在精度损失且不直观。 使用移位运算来避免乘法运算是一种常用技巧,不过乘数必须都是正整数,而且必须至少有一个是 2 的 n 次方,例如:2,4,8,16,32……移位运算的特点是速度快,而乘法运算速度较慢,把乘法运算转化为移位运算可以稍微提高程序运行效率。

猜你喜欢

转载自blog.csdn.net/pengnanzheng/article/details/88640979