#原碼 反碼 補碼的定義與運算 ##1原碼: 原碼是將十進制或者其他進制的數轉換為二進制表示(且要根據數據的類型轉換) 如:130 (默認是Int類型,則是4個字節) 原碼是:00000000 00000000 00000000 100000010
##2反碼: 1.當原碼是正數時,反碼就是原碼 2.當原碼是負數時,反碼是除了第一位的符號位以外的位數全部取反
##3補碼: 1.當原碼是正數時,反碼就是原碼 2.當原碼是負數時,補碼是反碼+1
#計算機操作中對數據的分析過程:
計算機中的數據運算是用數據的補碼進行的,但是顯示出來是用數據的原碼,及原碼顯示,對補碼進行操作
A: 獲取130的二進制原碼(數據默認是int類型)
00000000 00000000 00000000 10000010
B:對數據130的原碼取補碼進行截斷操作(130的補碼就是原碼),截成byte(1個字節8位)則變為 10000010
C:將截斷得到的byte類型的補碼用原碼表示(計算機顯示是用原碼顯示)
即是已知補碼求原碼
反碼= 補碼-1 :反碼=1 0000010 - 1 = 1 0000001
原碼=反碼取反(除去符號位以外的位) 原碼 = 1 1111110
D: 得到的顯示的數為 - 126
#byte值的問題
byte 的范圍是 -128 ~ 127
128 : 10000000
-128 : 10000000 (這的1既是符號位,也是數值位)
上接byte類型的強制轉換有byte b1 = 127; // OK
byte b1 = byte(128); //需要強制轉換 得-128
byte b1 = byte(129); //需要強制轉換 得-127
byte b1 = byte(130); //需要強制轉換 得-126
