gpt4 book ai didi

Java 位移位 (lsh) << - Java 中的错误?

转载 作者:行者123 更新时间:2023-12-01 13:57:36 25 4
gpt4 key购买 nike

我有一个表达:

short w = (short) ((byte) dana) << x);
...
String.format ("%04X", w);

如果它们包括:

dana =(字节)0x88;int x = 5;

我收到 0xF100

而不是0x1100

我该怎么做才能正确地做到这一点!

最佳答案

问题出在第一个 Actor 上:

(byte) dana

dana 转换为 byte,因此当稍后在表达式中使用它时,需要将其加宽回 int,这就是完成符号扩展。如果 number 为负数,则所有高位都设置为 1,以保持其值为 2 补码。

使用位掩码代替:

short w = (short) ((dana & 0xff) << x);

也许避免使用 short 会更好,因为 java 无论如何都会在 int 上进行所有算术运算。

关于Java 位移位 (lsh) << - Java 中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19542008/

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