Java 中 <<, >>, >>> 的一些解释

<<, >> 都是移位操作符,是作二进制移位的有符号左移和右移。

而 >>> 表示无符号右移,也叫逻辑右移,忽略符号位(无论正负),空位都以0补齐

操作符的前后都要求是整型(byte, short, int, long)

例如:
m >> n:
左边操作数 m 表示" 被移位的整数"
右边操作数 n 表示"移位的位数"

num << 1, 相当于num 乘以2
num >> 1, 相当于num 除以2

计算机内部使用2进制表示数字的,1 << i,就是把二进制整数1左移20位,
即 ,

000|0 0000 0000 0000 0000 000|1   变成 

000|1 0000 0000 0000 0000 000|0 正好20位
(不算最开始那位,从移动后的第一位开始算)

表示成十进制实际上是2^20,等于1048576。

(!注意,整型数的最高位是符号位,0表示正数,1表示负数,有符号移位表示移动时考虑符号,因此移位时有可能会溢出,而且这个移位是循环的,也就是说移到该类型的最高位再移一位就跑到最低位,比如int是32位,1<<32得到的还是1, 1<<31得到int能表示的最大负数)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值