Java 位移位,获取不正确的值
对于此转换:Java 位移位,获取不正确的值,java,Java,对于此转换: System.out.println(0b10000000_00000000_00000000_00000001>>>32); 我得到了这个输出值: -2147483647 这是对的吗?上面写着: 如果左侧操作数的提升类型为int,则仅将右侧操作数的五个最低阶位用作移位距离。这就好像右侧操作数接受了位逻辑AND运算符(§15.22.1),掩码值为0x1f(0b11111)。因此,实际使用的移动距离始终在0到31之间(包括0到31) 因为32在二进制中是10000
System.out.println(0b10000000_00000000_00000000_00000001>>>32);
我得到了这个输出值:
-2147483647
这是对的吗?上面写着:
如果左侧操作数的提升类型为int,则仅将右侧操作数的五个最低阶位用作移位距离。这就好像右侧操作数接受了位逻辑AND运算符(§15.22.1),掩码值为0x1f(0b11111)。因此,实际使用的移动距离始终在0到31之间(包括0到31)
因为32在二进制中是100000,所以只取最低的五位,这意味着您根本没有移动左手操作数
换句话说,0b10000000\u00000000\u00000000\u00000001>>32
相当于0b10000000\u00000000\u00000001>>0
因此,结果是0b10000000\u00000000\u00000000\u00000000\u0000000 1
随机)而编码函数以整数值计算活动位的数量。