原碼(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
简单直观;例如,我们用8位二进制表示一个数,则+11的原码为00001011,-11的原码就是10001011。
原码不能直接参加运算,可能会出错。例如数学上,1+(-1)=0,而在二进制中00000001+10000001=10000010,换算成十进制为-2。显然出错了。
所以原码的符号位不能直接参与运算,必须和其他位分开,这就增加了硬件的开销和复杂性。