【发布时间】:2014-03-06 03:42:58
【问题描述】:
我有以下java代码:
public static void main(String []args){
int a = 1;
byte b = -14;
int c = (a << 8) | b;
System.out.println(c);
}
产生:
-14
我原以为是 498。据我了解,移位后的 OR 操作将如下所示:1 0000 0000 | 1111 0010,我希望这会产生一个看起来像 0000 0001 1111 0010 的 int,其值为 498。显然,Java 以某种方式将字节扩展为 int c。谁能告诉我正确的方法来做到这一点?
我要做的是创建一个 int,其中最低有效字节为 b,第二个最低有效字节为 a。
【问题讨论】:
-
int c = ((a << 8) | ~(~0 << 8) & b);。这会给你 498。
标签: java numbers int byte bit-manipulation