微機原理與系統設計二 計算機中的數制與碼制

2021-09-09 07:48:03 字數 1662 閱讀 1456

二進位制轉換為十進位制數,設計程式往往採用除10取餘法(幾乎很少程式設計師採用位置加權法)。數制間的相互轉換另一種常用的方法是比較法

二進位制數的運算

①算術運算:+、-、*、/

②邏輯運算:and、or、xor、not(前三者影響psw中的標誌位,後者不影響)

and應用場合:想要將某些位清零;or應用場合:想要將某些位置1;xor應用場合:想要將某些位取反

機器數(computer number):是將符號"數位化"的數,是數字在計算機中的二進位制表示形式。機器數有2個特點:一是符號數位化,通常二進位制數的最高位為符號位,以0代表符號「+」,以1代表符號「-」;二是其數的大小受機器字長的限制。機器數有原碼、反碼和補碼三種形式。

無符號數與帶符號數的表示範圍:

①原碼:符號位加上真值的絕對值;

②反碼:正數的反碼是其本身;負數的反碼是原碼的符號位不變,其餘各個位取反。

③補碼(complement code):計算機中有符號數都用補碼表示。正數的補碼就是其本身;負數的補碼是在其反碼的基礎上+1,也可通過下面的計算公式獲取。而其表示範圍如下:

補碼的計算公式有如下規則:

包含符號位)+1

通過上述公式可知,可將減法變成加法,提高cpu運算速度。數位電路中加法器比減法器更容易設計實現。這樣cpu中alu的設計將只涉及到加法器,大大縮小了cpu的體積。

ps: 0帶符號是沒有意義的,用原碼表示會有[0000 0000]和[1000 0000]兩個編碼形式。於是設計了補碼, 負數的補碼就是反碼+1,正數的補碼就是正數本身,從而解決了0的符號以及兩個編碼的問題: 用[0000 0000]表示0,用[1000 0000]表示-128(這是乙個規定,它並沒有原碼和反碼)。故使用補碼表示的範圍為[-128, 127]。

總結:在計算機中資料用補碼表示,利用補碼統一了符號位與數值位的運算,同時解決了+0、-0問題,將空出來的二進位制原碼[1000 0000]表示為-128因此八位二進位制數表示範圍為-128~+127。

用4位二進位制數來表示1位十進位制數中的0~9這10個數碼。是一種二進位制的數字編碼形式,用二進位制編碼的十進位制**。8421 bcd碼是最基本和最常用的bcd碼,它和四位自然二進位製碼相似,各位的權值為8、4、2、1,故稱為有權bcd碼。和四位自然二進位製碼不同的是,它只選用了四位二進位製碼中前10組**,即用0000~1001分別代表它所對應的十進位制數,餘下的六組**不用。

計算機中表示bcd數的方法有兩種:組合bcd數與分離bcd數。表示的方法不同,運算後結果的調整方法就不同。因為計算機只將bcd數看作是二進位制數(並非十進位制數),運算結果可能是錯的,並非使用者想得到的正確的bcd結果,所以需將結果進行調整。

組合bcd數加法的運算結果調整指令為daa(即加6修正原則),若為減法則為減6修正原則;分離bcd數加法的運算結果調整指令為aaa。組合bcd數加法的運算結果調整流程圖與例項如下:

微機原理 二 計算機中的數制和編碼

二進位制的算數運算就不說了,不需要說 然後是二進位制的邏輯運算,與 and 或 or 非 not 也不用說,大家都知道.這裡主要說一下異或 xor 即 兩邏輯變數相同得0,不一樣得1 通常的,對於有符號數,最高位為符號位,其餘位為數值位,在符號位中,用 0 表示正,用 1 表示負.我們把乙個數及其符...

計算機中減法的實現原理

這本來就是大一的時候就開始學習的,但是之後一直沒再接觸。一接觸但有概念而沒有乙個清晰的過程,所以再次縷清了後記錄一下部落格。本文重點闡明了計算機中減法運算的實現以及反碼 補碼的意義。對於加法來說,計算機很容易實現,舉例 8 6 14 在計算機中,也就是 0000 1000 0000 0110 000...

計算機中的定址

電腦的位數通常是指cpu的處理位數,這個不是靠位址匯流排來決定的,這個位數指的是cpu 通用暫存器的資料寬度,即cpu一次運算可以處理的資料bit長度。前面所說的是記憶體空間足夠的情況,下面用過一道軟考題目解釋記憶體空間 定址範圍的情況 某計算機字長32位,儲存容量8mb。按字編址,其定址範圍為 0...