gpt4 book ai didi

java - 对于短值,位移位无法正常工作

转载 作者:行者123 更新时间:2023-12-02 01:29:39 25 4
gpt4 key购买 nike

我在对短值进行位移位时遇到了一些问题:

System.out.println(Integer.toBinaryString(0b1100010001000100 >>> 12); // works correctly, output: 1100
System.out.println(Integer.toBinaryString( 0xFFFF & (short)(0b1100010001000100) >>> 12)) // does not work correctly, output: 1111111111111100

有什么问题以及如何处理?

最佳答案

需要明确的是,0xFFFF & (short)(0b1100010001000100) >>> 12 表示 0xFFFF & ((short)(0b1100010001000100) >>> 12)。所以按位与是移位之后的最后一个。

有一条规则,在移位(和大多数其他操作)之前将 short 转换为 int,因此 short 是第一个符号- 扩展为int,由于值为负数,因此会出现更多前导。如果此隐式转换和移位之间发生按位与,则多余的将被删除:

(0xFFFF & (short)(0b1100010001000100)) >>> 12

关于java - 对于短值,位移位无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56311990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com