黑马程序员技术交流社区

标题: Java语言的移位运算 [打印本页]

作者: kunsongjack    时间: 2015-10-15 10:11
标题: Java语言的移位运算
   移位运算符就是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。

     比如左移<<的运算规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。显然左移是扩大的。
    在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。

    又比如 >>运算规则:按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。
    因此右移一位相当于除2,右移n位相当于除以2的n次方。

   我想问的是:既然位运算2<<4比2*16更有效率,为什么java编译器不会编译成2<<4呢?这样不是提高了运行效率了?

作者: 奋斗的丫丫    时间: 2015-10-15 16:00
计算机中数据都是二进制运算,移位也是处理二进制数据,所以效率高
作者: kunsongjack    时间: 2015-10-16 08:49
难道java编译器就不会自动编译成进行移位运算吗?




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