来自[隐藏链接--沦为恶意网站]
当要移位的值(左操作数)是 int 时,只有右手操作数的最后 5 位用于执行移位。移位的实际大小是被 31 (0x1f) 屏蔽的右侧操作数的值。即移位距离始终在 0 和 31 之间(如果移位值 > 32 移位为 32 % 值)
35 00000000 00000000 00000000 00100011
31 -> 0x1f 00000000 00000000 00000000 00011111
& -----------------------------------
Shift value 00000000 00000000 00000000 00000011 -> 3
-29 11111111 11111111 11111111 11100011
31 -> 0x1f 00000000 00000000 00000000 00011111
& -----------------------------------
Shift value 00000000 00000000 00000000 00000011 -> 3
那个的真实意义是什么?这是否意味着对于右移,您可以乘以 32 的最大值?这是为了防止溢出吗?