You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

移位运算符:char、byte、short及long类型的低阶位使用规则是什么?

Java移位运算符:类型处理与低阶位数规则

嘿,我来给你把Java里移位运算符针对char、byte、short和long类型的规则说清楚,再结合《Java编程思想》里的内容,你就能彻底搞懂了:

类型提升与结果类型规则

  • 当你对char、byte或者short执行移位操作时,Java会先把这些类型自动提升为int类型再进行移位计算,最终得到的结果也是int类型。
  • 如果操作的是long类型,移位后的结果仍然是long类型,不会发生类型提升。

低阶位数的限制规则

这部分是核心,能避免你做无意义的移位操作:

  • 针对int类型(包括从char/byte/short提升来的),移位时只会用到右侧操作数的5个低阶位。原因很简单:int是32位,2的5次方等于32,这样就能保证移位的位数永远不会超过int的总位数(比如移33位和移1位效果完全一样,没必要做多余的计算)。
  • 针对long类型,移位时只会用到右侧操作数的6个低阶位。因为long是64位,2的6次方等于64,同样是为了防止移位超过long的总位数。

《Java编程思想》里也有明确说明,原文是这样的:

若对char、byte或short执行移位操作,会先将其提升为int类型再进行移位,结果为int类型;仅使用右侧操作数的5个低阶位,这可防止移位超过int类型的位数。若操作long类型,结果为long类型;仅使用右侧操作数的6个低阶位,避免移位超过……

内容的提问来源于stack exchange,提问作者bugs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:04:52