電腦體繫結構(二)——碼制

來源:互聯網
上載者:User

    現在很多程式員,只是會用電腦編程,但是許多基礎的知識卻很薄弱。今天就跟大家說說碼制的問題。電腦對資料做的讀取、傳輸、運算、顯示等操作,都離不開碼制。常見的編碼方式有:原碼、反碼、補碼、移碼、BCD碼。我們一一說道。

     【原碼】    表示:最高位為符號位(0表正,1表負),其餘各位為數的絕對值。    舉例: [+11]原 =00001011  。 [-11]原 = 10001011 。    範圍:-127~+127    優點:乘除法操作比較簡單    缺點:0有2種表示方法, [+0]原 =00000000, [-0]原 =10000000 。加減法運算可能會出現溢出錯誤。    錯誤再現:(1)10 + (1)10 =  (0)10 ,用原碼錶示的: (00000001)2 + (10000001)2 = (10000010)2 =  (-2)10    錯誤原因:原碼的符號位不能直接參与運算,否則可能會出現錯誤。    為瞭解決原碼的加減法缺陷,引入了一個新的編碼——反碼。     【反碼】    表示:由原碼轉換而來,正數跟原碼一致;負數,符號位不變,其餘各位按位取反。    舉例: [+11]反 = [+11]原 =00001011 。 [-11]反 =
11110100 。    範圍:-127~+127    優點:符號位可以直接參与運算。減法可以變為加法運算。    缺點:0有2種表示方法,  [+0]反  =00000000,  [-0]反 =11111111     錯誤再現:(1)10 + (1)10 =  (0)10 ,使用反碼的結果是: (00000001)2 + (11111110)2 = (11111111)2 =  (-0)10     解決了加減法缺陷,還需要解決0編碼的問題,遂又引入了一個新的編碼——補碼。      【補碼】    表示:由反碼轉換而來,正數跟原碼一致;負數,反碼+1。    舉例: [+11]補 = [+11]原 =00001011 。 [-11]補 = 11110101 。    範圍:-128~+127    優點:符號位可以直接參与運算。減法可以變為加法運算。0有唯一編碼,  [+0]補 =[-0]補 =00000000 。    現在 (1)10 + (1)10 =  (0)10 ,用補碼錶示的: (00000001)2 + (11111111)2 = (00000000)2 =  (0)10,結果正確。    溢出判斷:兩個正數相加,如果符號位變為1,則溢出。兩個負數相加,符號位變為了0,則溢出。正數+負數則不會溢出。     【移碼】    表示:跟補碼數值位一樣,但符號位取反。    舉例: [+11]移 = 10001011 。 [-11]移 = 01110101 。    範圍:-128~+127     【8421BCD碼】    表示:十進位數每位都用4位2進位數表示 。    舉例: 43 => 0100 0011 。    優點:容易讀數,二進位和十進位的轉換快捷,適用於會計系統。    溢出修正:結果>=9,則+6,進1 。如3+5:0011 + 0101 = 1000 正確。6+7:0110 + 0111 = 1101,結果需修正,1101+0110 = 10011 =(13)10  

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.