小小Java面試題(二)

題目:
byte b = 130;有沒有問題?如果我想讓賦值正確,可以怎麼做?結果是多少?

class Demo{
    public static void main(String args[]){
    //byte的範圍是-128到127
    //130不在範圍內
    byte b = 130;

    //可以使用強制類型轉換 byte b = (byte) 130;
    //結果是  -126 
    }
}

分析過程:
我們要想知道結果是什麼,就應該知道是如何進行計算的
而我們又知道計算機中數據的運算都是補碼進行的
而要得到補碼,首先要計算出數據的二進制

1.獲取130的二進制
00000000 00000000 00000000 10000010
這是130的原碼 也是反碼 還是補碼
2.截取操作 截成byte類型
10000010
這個是補碼
3.已知補碼求原碼
符號位 數值位
補碼: 1 0000010
反碼: 1 0000001
原碼: 1 1111110

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章