gpt4 book ai didi

java - java中左移的错误结果

转载 作者:太空宇宙 更新时间:2023-11-04 06:42:47 25 4
gpt4 key购买 nike

我在java中做了一个变量,byte a = 0xA6;//10100110然后我做了这个:

System.out.println(Integer.toHexString( ((short)a<<8)&0xFFFF ));

结果是0xA600。这是正确的结果。但是当我尝试时

System.out.println(Integer.toHexString( ((short)a<<3)&0xFFFF ));

预期结果应为:0x530 (10100110000)但我得到了 0xFD30(1111110100110000) 嗯...有人能解释一下我是如何得到这个错误结果的吗...??

谢谢...:-)

最佳答案

字节值A6表示负数(字节在Java中是有符号的)。当您转换为 short 时,它会被符号扩展为 FFA6。此外,移位操作是用整数值执行的,因此它再次被符号扩展为FFFFFFA6。左移三位得到 FFFFFD30,取低 16 位得到 0000FD30

如果您移位 8 位,这并不重要,因为您会移出并屏蔽额外的 1 位。

关于java - java中左移的错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24449021/

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