我有这个功能:
public static final int UNSIGN(short b){
return (b & 0xFFFF);
}
这里的意图是使用'b'中的值,就好像它是正数一样,这意味着它就像是一个无符号的int,能够保存65536个值。但是,它不起作用。例如:
如果'b == -122',该函数返回'65414'。
我也尝试过这种方式:
public static final int UNSIGN(short b){
return (b & 0xFF);
}
但如果'b == 304',那将会让我'48'。
我真的迷失在这里,希望有人可以帮忙。
答案 0 :(得分:3)
这里的意图是使用'b'中的值,就好像它是正数一样。
您的意思是想要找到b
的绝对值吗?那将是Math.abs
。
但您的代码 正在处理b
,就好像它是无符号的短片一样。当b
为-122时,位将为
1111111110000110
...当被视为无符号值时为65414。
(122是0000000001111010,所以要取消它,你将值减1并翻转所有位。)