首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

请教2<<3为什么是2乘以8的最有效率的算法?<<这个运算符是什么意思

2012-08-14 
请问23为什么是2乘以8的最有效率的算法?这个运算符是什么意思?还有short s1 1 s1 s1 + 1 (s1+1

请问2<<3为什么是2乘以8的最有效率的算法?<<这个运算符是什么意思?
还有
short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)short s1 = 1; s1 += 1;(可以正确编译)
这个应该怎么解释呀?

[解决办法]
2<<3
左移运算符,对应的二进制表示左移3位。计算机做这种运算比作乘法快,具体处理计算机组成原理应该会介绍。

short s1 = 1; 
s1 = s1 + 1;加法之后的结果是int类型,不允许把int类型直接赋值给short类型。

short s1 = 1; s1 += 1;
+=编译器会自动处理为 s1=(short)(s1+1);

具体原因是jvm并没有定义short,byte等类型的运算,这种类型的运算都是转换成int进行的,所以如果要把结果保存回short或者byte这些类型的话需要一个强制类型转换。

热点排行
Bad Request.