1、計算機在任何情況下都隻能識别二進制
2、計算機在底層存儲數據的時候,一律存儲的是“二進制的補碼形式”,計算機采用補碼形式存儲數據的原因是:補碼形式效率最高。
3、記住:對于一個正數來說:二進制原碼、反碼、補碼是同一個,完全相同。
int i = 1;
對應的二進制源碼:00000000 00000000 00000000 00000001
對應的二進制反碼:00000000 00000000 00000000 00000001
對應的二進制補碼:00000000 00000000 00000000 00000001
對于一個負數來說:二進制原碼、反碼、補碼是什麼關系呢?
byte i = -1
對應的二進制源碼:10000001
對應的二進制反碼(符号位不變,其它位取反):11111110
對應的二進制補碼(反碼 1):11111111
下面我們通過題目來練習一下,請輸出以下代碼打印結果:
byte b = (byte)150; System.out.println(b);
我們先通過運行程序看下結果
最終結果為-106
我們慢慢來分析下原因:
,1、整數150已經超過了byte類型的取值範圍,所以強轉的時候會出現精度損失的情況;
2、150的二進制:00000000 00000000 00000000 10010110
3、int是4個字節,byte是1個字節,所以需要截取掉前3個字節:10010110
4、正數的源碼,反碼,補碼都一樣;現在的10010110是一個負數,所以我們要經過一輪的轉換才可以得到它的源碼
補碼:10010110
号碼:10010101
源碼:11101010
11101010 = 64 32 8 2 = 106
二進制的最左邊的一位代表正負數,1:負數,0:正數
所以為-106
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!