現在很多程序員,只是會用計算機編程,但是許多基礎的知識卻很薄弱。今天就跟大家說說碼制的問題。計算機對數據做的讀取、傳輸、運算、顯示等操作,都離不開碼制。常見的編碼方式有:原碼、反碼、補碼、移碼、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
本欄目