移位运算符就是在二进制的基础上对数字进行平移
我们知道Java中byteshort和char类型在进行计算时都是先将其转换为int类型同样在进行移位运算时也不例外它们移位后的结果也都会变成int类型由于int类型为位的()所以对于byteshortchar和int进行移位时规定实际移动的次数最多是位如果超过则按n = n % 来计算也就是说移位次和移位次得到的结果相同移动long型的数值时(long是位的)规定实际移动的次数是移动次数和的余数也就是移动次和移动次得到的结果相同您可以亲自动手做下试验
现在我们介绍Java中的三种位移运算符
)《(左移)
运算规则按二进制形式把所有的数字向左移动对应的位数高位移出(捨弃)低位的空位补零
语法格式
需要移位的数字 《 移位的次数
例如 《 则是将数字左移位
计算过程
《
首先把转换为二进制数字(int类型的话为位字节long的话为位字节) 然后把该数字高位(左侧)的两个零移出其他的数字都朝左平移位最后在低位(右侧)的两个空位补零则得到的最终结果是 则转换为十进制是
数学意义在数字没有溢出的前提下对于正数和负数左移一位都相当于乘以的次方左移n位就相当于乘以的n次方比如 《 = *
)》(带符号右移)
运算规则按二进制形式把所有的数字向右移动对应位数低位移出(捨弃)高位的空位补符号位即正数补负数补
语法格式
需要移位的数字 》 移位的次数
例如 》 则是将数字右移位
计算过程的二进制形式为 然后把低位的最后两个数字移出因为该数字是正数所以在高位补零则得到的最终结果是 转换为十进制是
数学意义右移一位相当于除右移n位相当于除以的n次方
)>>>(无符号右移)
运算规则按二进制形式把所有的数字向右移动对应位数低位移出(捨弃)高位的空位补零其他结构和》相似
位移运算通常用来对代码进行速度上的优化用它来代替乘除法将是很好的选择
下面来举几个例子希望对大家使用位移运算符有所帮助
用位移运算符来实现 i /
= + +
所以对i / 可以这样来表示 ( i 《 ) + ( i 《) + ( i 《 )
写出( q 《 ) + ( q 《 )实现的代码
原式 = q * ^ + q * ^ = q * ( + ) = q *