黑马程序员技术交流社区

标题: 问下3乘以8 [打印本页]

作者: zhousuo28    时间: 2015-5-28 22:41
提示: 该帖被管理员或版主屏蔽
作者: 牛奋    时间: 2015-5-28 23:02
位运算是效率最高的运算,往左移几位就乘以2的几次方,所以3‹‹3等价于3×8,而3×9只能用算术运算了。
作者: 大西洋    时间: 2015-5-28 23:13
本帖最后由 大西洋 于 2015-5-28 23:29 编辑

3<<3 的意思是把3的二进制数 00011 向左<<移3位变成 11000,11000的十进制代表24,所以3<<3才得到24;

而 3 * 9 = 27, 27的二进制数是 11011,先左移2位得到1101100 的十进制 = 108,108的二进制是1101100,右移2位就是11011,那就是108>>2; 或者移一位,110110 十进制 = 54,右移一位后得到11011,因此写: 54>>1 = 27 也可以~

同理,右移>>3、4、5位都随你~ 只要先得到结果的二进制数、以及对应的十进制数就可以了~ 位移运算很好理解,只是千万别理解为次方。


作者: wuyusi    时间: 2015-5-28 23:15
位运算肯定快了,3*9只是无法用位运算表示
作者: 大西洋    时间: 2015-5-28 23:21
牛奋 发表于 2015-5-28 23:02
位运算是效率最高的运算,往左移几位就乘以2的几次方,所以3‹‹3等价于3×8,而3×9只能用算术运算了。 ...

。。。。这位大侠,您理解有误。。。
作者: 半世心修    时间: 2015-5-28 23:25
位运算是计算机底层的运算,速度当然最快
作者: 途中ms前进    时间: 2015-5-29 00:10
位运算都是乘2或除2的移动位数次幂
作者: 1315317959    时间: 2015-5-29 00:23
3*8不是3<<3吧   是3<<2^3  即2的3次方吧
作者: wangkai    时间: 2015-5-29 00:41
3*8可以用位运算,3*9不能用位运算,因为位运算都是乘2或除2的移动n次幂的运算
作者: l598790586    时间: 2015-5-29 10:12
大西洋 发表于 2015-5-28 23:21
。。。。这位大侠,您理解有误。。。

人家应该没错吧,左移3位就是等同于乘以8啊
作者: 牛奋    时间: 2015-5-29 12:41
这样只是找到了方法得到27,个人觉得有点偏离了3×9。
作者: 微凉的暮色    时间: 2015-5-29 15:27
:o
好奇怪的位运算
不过,位运算的快是相对于计算机来说 的;并不是现实中的速度快,
在计算机中所有的运算都是通过 二级制 的加减来进行,相对于加减 位运算就是现实中的乘法
3*9 = 3<<<3+3





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2