Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 位移位,获取不正确的值_Java - Fatal编程技术网

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

随机)而编码函数以整数值计算活动位的数量。