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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马姗姗 中级黑马   /  2014-1-5 20:42  /  1042 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 马姗姗 于 2014-1-6 13:48 编辑

2*4=8;
最快的算法是位运算
2<<3;
这个意思是2的3次方的意思吗?


但是当3*8
最快算法的时候是3<<3;//24
但是这样是不是3的3次方 这样不就是27 吗?
为什么结果还是24呢?

6 个回复

倒序浏览
<<表示左移, 左移一位表示原来的值乘2.
这里3<<3 是指向左移3位,也就是3*2^3=24.
我给你个网址有关于位运算的详细介绍你看下:
http://www.cnblogs.com/highriver/archive/2011/08/15/2139600.html
回复 使用道具 举报
2<<3;
这个意思是2的3次方的意思吗?
亲,这个不是,这是2*2的3次方的意思,运算结果是16,而不是8,要得8是2<<2

但是当3*8
最快算法的时候是3<<3;//24
但是这样是不是3的3次方 这样不就是27 吗?
同理,你3*8等于3<<3

这里位移只能针对2,不可以对别的数字。
回复 使用道具 举报
是这样的:2<<3--> 2*2(3)即2乘以2的3次方;
3<<3--->3*2(3)即3乘以2的3次方;
即n<<m---->就是n乘以2的m次方。
回复 使用道具 举报
这个问题你本身对位运算就理解错误:2<<3是2*2^3=16;
所以3<<3是3*2^3=24;
回复 使用道具 举报
2<<3=2的三次方;x<<y就是x乘以2的y次方。
回复 使用道具 举报
“<<”是左移运算符,用于对运算对象的二进制数进行操作,将二进制的每一位向左移,左移几位,低位就补几个0。将某个数的二进制数左移几位就相当于用个数乘以2的几次方。所以2<<3就是将2的二进制数往左移3位,就是2乘以2的3次方,结果就是16,同理,3<<3就是将3的二进制数向左移3位,就是3乘以2的3次方,结果就是24。因为计算机是二进制的,所以使用位运算符可以提高运算效率。与“<<”相对应的的是“>>”右移运算符,就是将某个数的二进制数右移几位就相当于用个数除以2的几次方。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马