为什么这段代码打印248,而不是-8?

时间:2018-05-15 14:43:41

标签: java

public class Test{
    public static void main(String[] args) {    
        byte i = 31;
        System.out.println(i<<3);
    } 
}

为什么此代码打印248,而不是-8?

2 个答案:

答案 0 :(得分:0)

输出为256,没关系! 你向左转3。 我是32,它意味着100000为二进制,所以如果你向左移动它为3,它将是100000000,这意味着256为dec。

答案 1 :(得分:0)

您现在编辑了问题:

byte b = 310b11111。如果您现在i << 3,则转为0b11111000

哪个是248

您期望-8(byte) (i << 3)的结果。 bitshift的结果是整数。如果你想要一个字节值,你可以明确地将它转换为一个字节。