《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > 計算機體系結構(二) 碼制知識

計算機體系結構(二) 碼制知識

2017-06-22
關鍵詞: 匯編語言

現(xiàn)在很多程序員,,只是會用計算機編程,,但是許多基礎的知識卻很薄弱。今天就跟大家說說碼制的問題,。計算機對數(shù)據(jù)做的讀取,、傳輸,、運算、顯示等操作,,都離不開碼制,。常見的編碼方式有:原碼、反碼,、補碼,、移碼、BCD碼,。我們一一說道,。

【原碼】

表示:最高位為符號位(0表正,1表負),,其余各位為數(shù)的絕對值,。

舉例: [+11]原 =00001011  。 [-11]原 = 10001011 ,。

范圍:-127~+127

優(yōu)點:乘除法操作比較簡單

缺點:0有2種表示方法,, [+0]原 =00000000, [-0]原 =10000000 ,。加減法運算可能會出現(xiàn)溢出錯誤,。

錯誤再現(xiàn):(1)10 + (1)10 =  (0)10 ,用原碼表示的: (00000001)2 + (10000001)2 = (10000010)2 =  (-2)10

錯誤原因:原碼的符號位不能直接參與運算,否則可能會出現(xiàn)錯誤,。

為了解決原碼的加減法缺陷,,引入了一個新的編碼——反碼。

【反碼】

表示:由原碼轉換而來,,正數(shù)跟原碼一致;負數(shù),,符號位不變,,其余各位按位取反。

舉例: [+11]反 = [+11]原 =00001011 ,。 [-11]反 = 11110100 ,。

范圍:-127~+127

優(yōu)點:符號位可以直接參與運算。減法可以變?yōu)榧臃ㄟ\算。

缺點:0有2種表示方法,,  [+0]反  =00000000,,  [-0]反 =11111111

錯誤再現(xiàn):(1)10 + (1)10 =  (0)10 ,使用反碼的結果是: (00000001)2 + (11111110)2 = (11111111)2 =  (-0)10

本欄目更多精彩內(nèi)容:http://www.bianceng.cn/Programming/hb/

解決了加減法缺陷,,還需要解決0編碼的問題,,遂又引入了一個新的編碼——補碼。

【補碼】

表示:由反碼轉換而來,,正數(shù)跟原碼一致,;負數(shù),反碼+1,。

舉例: [+11]補 = [+11]原 =00001011 ,。 [-11]補 = 11110101 。

范圍:-128~+127

優(yōu)點:符號位可以直接參與運算,。減法可以變?yōu)榧臃ㄟ\算,。0有唯一編碼,  [+0]補 =[-0]補 =00000000 ,。

現(xiàn)在 (1)10 + (1)10 =  (0)10 ,用補碼表示的: (00000001)2 + (11111111)2 = (00000000)2 =  (0)10,,結果正確。

溢出判斷:兩個正數(shù)相加,,如果符號位變?yōu)?,,則溢出。兩個負數(shù)相加,,符號位變?yōu)榱?,,則溢出。正數(shù)+負數(shù)則不會溢出,。

【移碼】

表示:跟補碼數(shù)值位一樣,,但符號位取反。

舉例: [+11]移 = 10001011 ,。 [-11]移 = 01110101 ,。

范圍:-128~+127

【8421BCD碼】

表示:十進制數(shù)每位都用4位2進制數(shù)表示 。

舉例: 43 => 0100 0011 ,。

優(yōu)點:容易讀數(shù),,二進制和十進制的轉換快捷,適用于會計系統(tǒng),。

溢出修正:結果>=9,,則+6,進1 ,。如3+5:0011 + 0101 = 1000 正確,。6+7:0110 + 0111 = 1101,,結果需修正,1101+0110 = 10011 =(13)10


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點,。轉載的所有的文章、圖片,、音/視頻文件等資料的版權歸版權所有權人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權者。如涉及作品內(nèi)容,、版權和其它問題,,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,,避免給雙方造成不必要的經(jīng)濟損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。