移位字节值
Shifting a byte value
我有以下 java 程序:
public class java {
public static void main(String[] args) {
byte a=64, b;
int i;
i=a<<2;
b=(byte)(a<<2);
System.out.println(i);
System.out.println(b);
}
}
在这个程序中,b的值怎么变成零?我没听懂。
因为一个byte
正好是8位。而你的 int
的最后 8 位是 0
。如果我们添加 Integer.toBinaryString(int)
的结果,例如
byte a = 64;
int i = a << 2;
System.out.println(Integer.toBinaryString(i));
byte b = (byte) (a << 2);
你会看到输出是
100000000
所以b
(因为1
是第9位)变成
00000000
(即 0)。
我有以下 java 程序:
public class java {
public static void main(String[] args) {
byte a=64, b;
int i;
i=a<<2;
b=(byte)(a<<2);
System.out.println(i);
System.out.println(b);
}
}
在这个程序中,b的值怎么变成零?我没听懂。
因为一个byte
正好是8位。而你的 int
的最后 8 位是 0
。如果我们添加 Integer.toBinaryString(int)
的结果,例如
byte a = 64;
int i = a << 2;
System.out.println(Integer.toBinaryString(i));
byte b = (byte) (a << 2);
你会看到输出是
100000000
所以b
(因为1
是第9位)变成
00000000
(即 0)。