題目:
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