1 左移运算符
左移位运算符为 << ,其运算规则是:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。
例如,将整数 11 向左位移 1 位的过程如下图所示。
从上图可以看到,原来数的所有二进制位都向左移动 1 位。原来位于左边的最高位 0 被移出舍弃,再向尾部追加 0 补位。最终到的结果是 22,相当于原来数的 2 倍。
2 右移运算符
右位移运算符为 >> ,其运算规则是:按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补零。
例如,将整数 11 向右位移 1 位的过程如下图所示。
从上图可以看到,原来数的所有二进制位都向右移动 1 位。原来位于右边的最低位 1 被移出舍弃,再向最高位追加 0 补位。最终到的结果是 5,相当于原数整除 2 的结果。
3 无符号右移运算符
无符号右移运算符和右移运算符是一样的,不过无符号右移运算符在右移的时候是补0的,而右移运算符是补符号位的。
以下是 -12345 二进制表达式
在右移运算符中,右移后补0,是由于正数 12345 符号位为0 ,如果为1 则应补1
4 >>和>>>运算符之间的区别
>> 和 >>> 都用于向右位移。区别在于 >> 保留符号位,而运算>>则不保留符号位。要保留符号位,您需要在MSB(最高有效位)中添加0。
5 位移的简单代码示例
/**
* 网址:https://www.jhelpe.net
*
* author : kame
* date : 10/15/23 10:45 AM
*/
public class Demo {
public static void main(String[] args) {
byte x, y;
x=10;
y=-10;
System.out.println("左移运算符: x<<2 = "+(x<<2));
System.out.println("由移运算符: x>>2 = "+(x>>2));
System.out.println("无符号右移: x>>>2 = "+(x>>>2));
System.out.println("无符号右移: y>>>2 = "+(y>>>2));
}
}
输出结果为:
左移运算符: x<<2 = 40
由移运算符: x>>2 = 2
无符号右移: x>>>2 = 2
无符号右移: y>>>2 = 1073741821
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
本文链接:https://www.jhelp.net/p/tG2HzLGjMQOgneGi (转载请保留)。
关注下面的标签,发现更多相似文章
本站推荐
-
1250
-
1039
-
597
-
512
-
491
文章目录