java 位运算中移动位数超过数据长度和右移的两种不同方式

记录 java 位运算中的两点注意事项:移动位数超过数据长度和右移的两种不同方式。

int、long类型数据移动等于或超过最大位数

在 java 中,int 类型的数据长度为 32 位,如果将 int 类型左移或者右移大于或等于 32 位时,并不会像预计的那样将数据全部填充为1或0。java 的处理方式是:当刚好为数据长度的整数倍时,即32、64······,数据保持原来不变;其他情况下移动除以 32 余数的长度。同理 long 类型数据以 64 为变化基准。
在实际应用中,需要特别注意这点,当然也可以巧用此特性实现一些特殊算法的设计。

算术右移、逻辑右移、无符号右移

在 java 中左移只有一种,以0补齐低位,运算符号为 <<。而又移分为两种:算术右移 >> 和逻辑右移 >>>,其中逻辑右移也叫作无符号右移。
逻辑右移以0补全高位,而算术右移则是根据数据的第一位决定右移后高位补全的内容,若为1则补1,否则补0。

==========================================
疑问?帮助?批评?欢迎评论 | QQ:593159978

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值