public class Test{
public static void main(String[] args) {
byte i = 31;
System.out.println(i<<3);
}
}
为什么此代码打印248,而不是-8?
答案 0 :(得分:0)
输出为256,没关系! 你向左转3。 我是32,它意味着100000为二进制,所以如果你向左移动它为3,它将是100000000,这意味着256为dec。
答案 1 :(得分:0)
您现在编辑了问题:
byte b = 31
是0b11111
。如果您现在i << 3
,则转为0b11111000
。
哪个是248
。
您期望-8
是(byte) (i << 3)
的结果。 bitshift的结果是整数。如果你想要一个字节值,你可以明确地将它转换为一个字节。