原碼(True form)是電腦運算的名詞,是指「未經更改」的碼。為了便於ALU的設計,又發展出一補碼二補碼等轉換過的碼。

原碼是指一個二進制數左邊加上符號位後所得到的碼,且當二進制數大於0時,符號位為0;二進制數小於0時,符號位為1;二進制數等於0時,符號位可以為0或1(+0/-0)。

原碼的具體定義

電腦中所有的數均用0、1編碼表示,數字的正負號也不例外,如果一個機器數字長是n位的話,約定最左邊一位用作符號位,其餘n-1位用於表示數值。

小數原碼的定義

[X] =  

例如:[+0.1011]=0.1011000

[-0.1011]=1.1011000

(代碼中的小數點「.」是在書寫時為了清晰起見加上去的,在機器中並不出現。)

整數原碼的定義

[X] =  

例如:[+1011]=00001011

[-1011]=10001011

編碼方式

原碼是最簡單的編碼方式,便於輸入輸出,但作為代碼加減運算時較為複雜。一個字長為n的機器數能表示不同的數字的個數是固定的 個。當 時,能表示256個數字。

有符號數

用來表示有符號數,數的範圍就是 。當 時,這個範圍就是 

無符號數

在不需要考慮數的正負時,就不需要用一位來表示符號位,n位機器數全部用來表示是數值,這時表示數的範圍就是 。當 時,這個範圍就是 

原碼的優點

簡單直觀;例如,我們用8位元二進制表示一個數,則+11的原碼為00001011,-11的原碼就是10001011。

原碼的缺點

原碼不能直接參加運算,可能會出錯。例如數學上,1+(-1)=0,而在二進制中00000001+10000001=10000010,換算成十進制為-2。顯然出錯了。

所以原碼的符號位不能直接參與運算,必須和其他位分開,這就增加了硬件的開銷和複雜性。

參見