A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhousuo28 中级黑马   /  2015-5-28 22:41  /  550 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

提示: 该帖被管理员或版主屏蔽

11 个回复

倒序浏览
牛奋 来自手机 中级黑马 2015-5-28 23:02:41
沙发
位运算是效率最高的运算,往左移几位就乘以2的几次方,所以3‹‹3等价于3×8,而3×9只能用算术运算了。
回复 使用道具 举报
本帖最后由 大西洋 于 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位都随你~ 只要先得到结果的二进制数、以及对应的十进制数就可以了~ 位移运算很好理解,只是千万别理解为次方。

回复 使用道具 举报
位运算肯定快了,3*9只是无法用位运算表示
回复 使用道具 举报
牛奋 发表于 2015-5-28 23:02
位运算是效率最高的运算,往左移几位就乘以2的几次方,所以3‹‹3等价于3×8,而3×9只能用算术运算了。 ...

。。。。这位大侠,您理解有误。。。
回复 使用道具 举报
位运算是计算机底层的运算,速度当然最快
回复 使用道具 举报
位运算都是乘2或除2的移动位数次幂
回复 使用道具 举报
3*8不是3<<3吧   是3<<2^3  即2的3次方吧
回复 使用道具 举报
3*8可以用位运算,3*9不能用位运算,因为位运算都是乘2或除2的移动n次幂的运算
回复 使用道具 举报
大西洋 发表于 2015-5-28 23:21
。。。。这位大侠,您理解有误。。。

人家应该没错吧,左移3位就是等同于乘以8啊
回复 使用道具 举报
牛奋 来自手机 中级黑马 2015-5-29 12:41:17
11#
这样只是找到了方法得到27,个人觉得有点偏离了3×9。
回复 使用道具 举报
:o
好奇怪的位运算
不过,位运算的快是相对于计算机来说 的;并不是现实中的速度快,
在计算机中所有的运算都是通过 二级制 的加减来进行,相对于加减 位运算就是现实中的乘法
3*9 = 3<<<3+3
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马