一、二進位制概念
基於計算機內部組成原理,在記憶體中位元組是可定址的最小單位,每個1位元組由8個0或1的二進位制位組成(有時二進位制位也稱為位元,英文bit),最左邊的二進位制位稱為最高位,最右邊的二進位制位稱為最低位。如下圖。
了解上面一些概念之後,咋們來討論乙個問題。
1個位元組最大的表示範圍是多少?要回答這個問題需要引入兩個概念分別是無符號數和有符號數。
二、無符號數
三、有符號數
為了方便我們人閱讀二進位制,我用引入乙個原碼的概念來表示二進位制中的正負數。上面85和-85的數值表示如下
數值二進位制
850101 0101
-851101 0101
弄明白了原碼之後,我們就要在計算機進行運算,先弄個最簡單的相加運算。我們希望(+85)和(-85)相加是0,用二進位制表示就是
0101 0101
+ 1101 0101
-------------
0010 1010
0010 1010實際上是(41),這不是我們期望的結果。
3.1、為了解決「正負相加等於0」的問題,在「原碼」的基礎上,人們又引入反碼的概念。
「反碼」表示方式用來處理負數的反碼,符號位置不變,其餘位置相反例如原碼1101 0101,反碼就是1010 1010。再進行一次相加運算。
0101 0101
+ 1010 1010
------------------
1111 1111
剛好反碼1111 1111就是(-0)。看到這裡還有個問題,我們的現實世界中,0是沒有正負數之分的。
2.為了解決計算機中+0和-0的問題。人們又引入補碼的概念。
"補碼"表示,正數的補碼其二進位制本身。負數的補碼在反碼的基礎上+1。因此1111 1111+1變成了1 0000 0000,去掉高位就是0000 0000。這樣就解決了+0和-0同時存在的問題
小結數值
原碼反碼
補碼85
0101 0101
0101 0101
0101 0101
-851101 0101
1010 1010
1010 1011
1.正數(無符號數)其原碼、反碼、補碼相同
2.經過上面幾個概念之後,要記住一點,在計算機系統中,數值一律用補碼來表示和儲存,並且1個位元組最多能表示2
82^8
28也就是256個數值。
3.乙個位元組無符號數範圍:0000000011111111(0255)總共有256個數值。
4.乙個位元組二進位制位有符號數表示範圍:1000 0000~0111 1111(即-128~127)。
這裡有兩個疑問
1、為什麼最小負數是-128而不是-127?
正數的最大值應該是 0111 1111 127 (補碼:再次提示計算機的資料都是以補碼形式)
0111 1110 126
0111 1101 125
…0000 0001 1
0000 0000 0 (為了方便理解 我把0看成正數)
由上可知補碼從0000 0000 到 0111 1111 中存在128個數字
負數從大到小最大值是-1對應的
原碼 1000 0001
反碼 1111 1110
補碼 1111 1111
補碼從大到小順序排列如
-1 1111 1111
-2 1111 1110
-3 1111 1101
…-127 1000 0001
-128 1000 0000
正數和0一共128個 負數128個 剛好滿足2
82^8
28=256個數
具體補碼表示如下圖
+----------------------------+
| 255 -1 11111111 |
| 254 -2 11111110 |
| 253 -3 11111101 |
| 252 -4 11111100 |
| 251 -5 11111011 |
| 246 -10 11110110 |
| 236 -20 11101100 |
| 226 -30 11100010 |
| 216 -40 11011000 |
| 206 -50 11001110 |
| 196 -60 11000100 |
| 186 -70 10111010 |
| 156 -100 10011100 |
| 129 -127 10000001 |
| 128 -128 10000000 |
| 127 127 01111111 |
| 100 100 01100100 |
| 70 70 01000110 |
| 60 60 00111100 |
| 50 50 00110010 |
| 40 40 00101000 |
| 30 30 00011110 |
| 20 20 00010100 |
| 10 10 00001010 |
| 5 5 00000101 |
| 4 4 00000100 |
| 3 3 00000011 |
| 2 2 00000010 |
| 1 1 00000001 |
| 0 0 00000000 |
+----------------------------+
2、為什麼補碼1000 0000表示-128
要解釋這個問題,先思考-128的原碼怎麼表示(先不要糾結乙個位元組等於8位元)是不是11000 0000,最左邊的1是符號位表示負數,總共用9個位元來表示-128。
我們把11000 0000轉成反碼就是10111 1111。
再將10111 1111轉成補碼(即+1)就是11000 0000。這個時候考慮乙個位元組有8位元,11000 0000會導致資料溢位,因此計算機內部抹掉最高位1,用1000 0000表示-128。
計算機組成原理二
1.指令的格式 每條指令等長,均為2個位元組 第乙個位元組的高四位是操作碼,低四位作為表示暫存器號 第二個位元組是儲存單元位址 2.計算機啟動過程 1 計算機啟動後,從bios晶元中取出指令,進行執行,這段程式就是在實模式在進行的。2 設定cpu中pe 1,作業系統進入保護模式,如果任務需要會進入虛...
計算機組成原理二
計算機的基本組成 一.馮諾依曼計算機的特點 儲存程式通用方案 edvac 1.特點1 五大部分組成 運算器 控制器 儲存器 輸入裝置 輸出裝置 2指令和資料以同等地位存於儲存器 可按定址訪問 3.指令和資料都用二進位制表示 4.指令由操作碼和位址碼組成。操作碼指指令做什麼操作,位址碼指運算元所在的位...
計算機組成原理cu 計算機組成原理 計算機概論
現代計算機樣式千奇百怪,常見的有我們的筆記本,台式電腦,也有各種伺服器 手機 攝像頭等都屬於計算機範疇。計算機包含我們看得見摸得著的計算機實體,稱為計算機硬體,如cpu 記憶體 各種掛接裝置等 還有我們看不見摸不著的軟體,它支援著硬體按照我們的預想在操作,包括系統軟體和應用軟體 計算機硬體樣式千奇百...