为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 3 >> 32 等于 3?

为什么 3 >> 32 等于 3?

翻阅古今 2022-12-21 13:13:54
为什么3右移32等于3而不是0。我在 nodeJs 和 Java 中得到了这些结果3 >> 31 = 03 >> 32 = 33 >> 33 = 13 >> 34 = 03 >> 35 = 0
查看完整描述

1 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

这是 Java 语言规范的一部分。右侧操作数被换行,因此它始终在 0 - bits范围内,其中bits是左侧操作数的位数。由于您要移动 32 位整数,因此右手操作数包含在 0 到 31 之间。32 变为 0,33 变为 1 等。

请参阅移位运算符的 Java 语言规范

如果左侧操作数的提升类型为 int,则仅右侧操作数的五个最低位用作移位距离。就好像右边的操作数受到掩码值 0x1f (0b11111) 的按位逻辑与运算符 & (§15.22.1)。因此,实际使用的移位距离始终在 0 到 31 的范围内,包括端值。


查看完整回答
反对 回复 2022-12-21
  • 1 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号