原码、反码、补码、移码、尾码、阶码

一开始学原码、反码、补码、移码、尾码、阶码这些码时,一个词头晕目眩。对我而言,在夜深人静的时候慢慢的去体会这些码,就像回到高中,在研究一道大家都不会的物理题,这只有经历过的人才能体会到其中的奥妙。

学习这些码,只要是理解。

 

原码

是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位),该位为0表示正数,该位为1表示负数,其余位表示数值的大小。
原码的优点是简单直观,特点是符号位与数值位在运算时要区别对待。
例如 4的 原码就是 0100

 

反码

正整数的反码就是其自身,而负整数的反码可以通过对其绝对值逐位求反来求得。在反码表示法中,符号位仍然是0表示正号,1表示负号。数值0用反码表示也有+0和-0之分。
例如:当n=8时,[+0]反=00000000,[-0]反=11111111

 

补码

(1)正数的补码:与原码相同。 例如,+9的补码是00001001。
(2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。
例如,-7的补码:因为是负数,则符号位为“1”,整个为10000111;其余7位为-7的绝对值+7的原码
0000111按位取反为1111000;再加1,所以-7的补码是11111001。
已知一个数的补码,求原码的操作分两种情况:
(1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。
(2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取
反,然后再整个数加1。
例如,已知一个补码为11111001,则原码是10000111(-7)

 

移码(

又叫增码)是符号位取反的补码,一般用做浮点数的补码,引入的目的是为了保证浮点数的机器零为全0。

①移码的定义:设由1位符号位和n位数值位组成的阶码,则 [X]移=2En + X     -2n≤X ≤ 2n
例如: X=+1011     [X]移=11011     符号位“1”表示正号
             X=-1011     [X]移=00101     符号位“0”表示负号

②移码与补码的关系: [X]移与[X]补的关系是符号位互为相反数(仅符号位不同),
例如: X=+1011     [X]移=11011     [X]补=01011
             X=-1011     [X]移=00101     [X]补=10101

③移码运算应注意的问题:
◎对移码运算的结果需要加以修正,修正量为2En ,即对结果的符号位取反后才是移码形式的正确结果。
◎移码表示中,0有唯一的编码——1000…00,当出现000…00时(表示-2En),属于浮点数下溢。
移码(又叫增码)是符号位取反的补码,一般用做浮点数的补码,引入的目的是为了保证浮点数的机器零为全0。

 

尾码,阶码

对于任意一个二进制数N,可用N=S*2P表示,其中S为尾数,P为阶码,2为阶码的底,P、S都用二进制数表示,S表示N的全部有效数字,P指明小数点的位置,当阶码为固定值时,数的这种表示法称为定点表示,这样的数称为定点数;当阶码为可变时,数的这种表示法称为浮点表示,这样的数称为浮点数 

 

    

  正数                     负数                                      
  原码   就是其自身   把其绝对值的原码的符号位置1即可    
  补码   就是其自身   其符号位不动,其他部分变反加1      
  反码   就是其自身   其符号位不动,其他部分变反      
  移码   将对应补码的符号位直接变反即可

你可能感兴趣的:(嵌入式系统设计师-软考)