我有这个功能:
public static final int UNSIGN(short b){
return (b & 0xFFFF);
}
这里的目的是使用“b”中的值,就好像它是正数一样,我的意思是,就好像它是一个无符号整数,能够容纳 65536 个值。然而,这不起作用。例如:
如果“b == -122”,函数返回“65414”。
我也尝试过这种方法:
public static final int UNSIGN(short b){
return (b & 0xFF);
}
但是如果“b == 304”,那将返回“48”。
我真的很迷茫,希望有人能帮忙。
最佳答案
The intent here is to use the value in 'b' as if it were positive.
您的意思是要求 b
的绝对值吗?那将是 Math.abs
.
但是您的代码将b
视为无符号短整型。当b
为-122时,位将为
1111111110000110
...当视为无符号值时,其值为 65414。
(122 是 0000000001111010,因此要对其取反,请将值减 1 并翻转所有位。)
关于Java 无符号 - 删除符号位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14552424/