Java里的左移和右移

左移

在Java中

左移运算符“<<” - 使指定值的所有位都左移规定的次数。
左移m<<n 代表把数字m在无溢出的前提下乘以2的n次方。

public class Main {
  public static void main(String[] args) {
    int a = 5;
    int b = a << 2;
    System.out.println(b);
  }
}

5:101
左移2位:10100,即20

在这个例子中,我们定义了一个整数变量a并将其设置为5。然后,我们使用左移运算符将a的所有位向左移动2个位置。结果,b的值为20。

右移

右移运算符“>>” - 使指定值的所有位都右移规定的次数。

右移m>>n 代表把数字m除以2的n次方,原来是正数的还是正数,负数还是负数。

public class Main {
  public static void main(String[] args) {
    int a = 20;
    int b = a >> 2;
    System.out.println(b);
  }
}

20:10100
右移两位:101,即5

在这个例子中,我们定义了一个整数变量a并将其设置为20。然后,我们使用右移运算符将a的所有位向右移动2个位置。结果,b的值为5。

无符号右移

运算符“>>>” - 同右移,但是结果全变正数。

public class Main {
  public static void main(String[] args) {
    int a = -4;
    int b = a >>> 1;
    System.out.println(b);
  }
}

在这个例子中,我们定义了一个整数变量a并将其设置为-4。然后,我们使用无符号右移运算符将a的所有位向右移动1个位置。结果,b的值为2147483646。

-4的二进制表示是11111111111111111111111111111100
右移一位后是01111111111111111111111111111110,即十进制的2147483646

两种右移有什么区别?

在Java中,右移运算符“>>” - 使指定值的所有位都右移规定的次数。 右移m>>n 代表把数字m除以2的n次方,原来是正数的还是正数,负数还是负数。 无符号右移运算符“>>>” - 同右移,但是结果全变正数。

有符号右移运算符“>>”和无符号右移运算符“>>>”之间的区别在于,有符号右移运算符“>>”将最高位(即符号位)复制到左侧,而无符号右移运算符“>>>”则将左侧填充零。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值