
C++用位操作优化加减乘除法是什么意思,具体指什么?
3个回答
展开全部
我觉得谈不上优化, 如果真有性能提升, 编译器也会自己优化.
对于一个十进制的数来说, 左移一位就等于乘以10, 比如 99 左移为 990.
左移2位就等于乘以10的2次方100, 比如 99左移2位就是9900
右移正好反过来, 是除.
计算机的数据是2进制, 所以用2代替10.
int x = 100;
x << 1; // 等于x*2
x << 2; // 等于x*4
x << 3; // 等于x*8
x >> 4; // 等于 x/16
有人说这么做性能比较高.
至于加减法, 我真不知道用位操作怎么做.
对于一个十进制的数来说, 左移一位就等于乘以10, 比如 99 左移为 990.
左移2位就等于乘以10的2次方100, 比如 99左移2位就是9900
右移正好反过来, 是除.
计算机的数据是2进制, 所以用2代替10.
int x = 100;
x << 1; // 等于x*2
x << 2; // 等于x*4
x << 3; // 等于x*8
x >> 4; // 等于 x/16
有人说这么做性能比较高.
至于加减法, 我真不知道用位操作怎么做.
追问
10进制能够进行位操作??扯淡吧
追答
.. 用十进制给你举个例子而已, 下面不是说了 "" 计算机的数据是2进制, 所以用2代替10.""
展开全部
一般情况下只有在乘以或除以2的n次方时采用移位的方法,这样比直接相乘或相除效率高的多。
比如2*4可以用2<<2来表示,4*8可以用4<<3来表示,18/2可以用18>>1来表示。
至于为什么效率高,这涉及到了cpu中运算器的运算方法问题,说起来不太好说,建议你如果真有想弄明白的想法,就看一看计算机组成原理的运算器节,看完后相信你就知道为什么性能优化了
比如2*4可以用2<<2来表示,4*8可以用4<<3来表示,18/2可以用18>>1来表示。
至于为什么效率高,这涉及到了cpu中运算器的运算方法问题,说起来不太好说,建议你如果真有想弄明白的想法,就看一看计算机组成原理的运算器节,看完后相信你就知道为什么性能优化了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用位运算实现算术运算比直接进行效率要高得多。
追问
如何实现,小举个例子,谢谢了。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询