java 位移操作符,Java 位移操作符

Java 位移操作符

1 左移运算符

左移位运算符为 <

例如,将整数 11 向左位移 1 位的过程如下图所示。

106f15d6ac86e416a0e26c53944adb9c.png

从上图可以看到,原来数的所有二进制位都向左移动 1 位。原来位于左边的最高位 0 被移出舍弃,再向尾部追加 0 补位。最终到的结果是 22,相当于原来数的 2 倍。

2 右移运算符

右位移运算符为>> ,其运算规则是:按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补零。

例如,将整数 11 向右位移 1 位的过程如下图所示。

486c63e8a7889292d6c348bedaa526ee.png

从上图可以看到,原来数的所有二进制位都向右移动 1 位。原来位于右边的最低位 1 被移出舍弃,再向最高位追加 0 补位。最终到的结果是 5,相当于原数整除 2 的结果。

3 无符号右移运算符

无符号右移运算符和右移运算符是一样的,不过无符号右移运算符在右移的时候是补0的,而右移运算符是补符号位的。

以下是 -12345 二进制表达式

cbfccb94c44f01e97d955e453c1513e8.png

在右移运算符中,右移后补0,是由于正数 12345 符号位为0 ,如果为1 则应补1

bd6d56b6d93f3a4e6ac4c5fd35c87372.png

4 >>和>>>运算符之间的区别

>> 和 >>> 都用于向右位移。区别在于 >> 保留符号位,而运算>>则不保留符号位。要保留符号位,您需要在MSB(最高有效位)中添加0。

5 位移的简单代码示例

package com.yiidian;

/**

* 一点教程网 - http://www.yiidian.com

*/

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值