我试图将整数右移32,但结果是相同的数字。
(例如5 >> 32
是5。)
如果我尝试在Byte和Short上执行相同的操作,它可以工作。例如,“(byte)5>> 8”为0。
Integer有什么问题?
答案 0 :(得分:9)
答案 1 :(得分:0)
移码转换会将结果作为int
或long
返回。因此,即使您转移byte
,也会得到int
。
Java代码:
public static void main(String s[]) {
byte b = 5;
System.out.println(b >> 8);
int i = 8;
System.out.println(i >> 32);
}
字节代码:
0: iconst_5
1: istore_1
2: getstatic #16 // Field java/lang/System.out:Ljava/io/PrintStream;
5: iload_1
6: bipush 8
8: ishr
9: invokevirtual #22 // Method java/io/PrintStream.println:(I)V ==> Using println(int)
12: bipush 8
14: istore_2
15: getstatic #16 // Field java/lang/System.out:Ljava/io/PrintStream;
18: iload_2
19: bipush 32
21: ishr
22: invokevirtual #22 // Method java/io/PrintStream.println:(I)V ==> Using println(int)
25: return