Java数据类型练习

/*
        byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少?
        练习: byte b = 300;

*/
class DataType6{
    public static void main(String[] args){
        //因为byte的范围是:-128到127.
        //130不在此范围内,所以报错。
        //byte b = 130;


        //可以使用强制类型转换
        byte b = (byte)130;

        //结果是多少?
        System.out.println(b);
    }
}
/*
    分析:
        我们要想知道结果是什么,应该知道计算机如何计算
        计算机中的计算是以补码的形式进行的
        所以需要该数的补码,先计算二进制

        A:130的二进制是:
            00000000 00000000 000000000 10000010
            这是130的原码,反码和补码
        B:做截取操作,截成byte类型
            10000010
            这个结果是补码。
        C:已知补码求原码。
                   符号位       数值位
            补码:    1         0000010
            反码:    1         0000001
            原码:    1         1111110

        所以130是127

你可能感兴趣的:(Java,基础学习)