计算机数字表示

 

计算机数字表示方法

 

 

把符号“数字化”的数称为机器数,而把带“+”或“-”符号的数称为真值。一旦符号数字化后,符号和数值就形成了一种新的编码。在运算过程中,符号位能否和数值部分一起参加运算?如果参加运算,符号位又需作哪些处理?这些问题都与符号位和数值位所构成的编码有关,这些编码就是原码、补码、反码和移码。

 

 

1.原码表示法

原码是机器数中最简单的一种表示形式,符号位为0表示正数,符号位为1表示负数,数值位即真值的绝对值,故原码表示又称为带符号的绝对值表示。原码表示简单明了,并易于和真值转换。但用原码进行加减运算时,却带来了许多麻烦。例如,当两个操作数符号不同且要作加法运算时,先要判断两数绝对值大小,然后将绝对值大的数减去绝对值小的数,结果的符号以绝对值大的数为准。运算步骤既复杂又费时,而且本来是加法运算却要用减法器实现。那么能否在计算机中中设加法器,只作加法操作呢?如果能找到一个与负数等价的正数来代替该负数,就可把减法操作用加法代替。而机器数采用被码时,不能满足此要求。

 

2.补码表示法

在日常生活中,常会遇到“补数”的概念。例如,时钟指示6点,欲使它指示3点,既可按顺时针方向将分针转9圈,又可按逆时针方向将分针转3圈,结果是一致的。15点和3点均显示3点。这样-3+9对时钟而言其作用是一致的。在数学上称12为模块,写作mod12,而称+9-312为模块的补数。对模12而言,-3+9是互为补数的。

 

3.反码表示法

反码通常用来作为由原码求补码或者由补码求原码的中间过渡。

 

 

 

 

 

 

 

数的定点表示和浮点表示

在计算机中,小数点不用专门的器件表示,而是按约定的方式标出,共有两种方法表示小数点的存在,即定点表示和浮点表示。定点表示的数称为定点数,浮点表示的数称为浮点数。

 

1.定点表示

小数点固定在某一位置的 数为定点数。当小数点位于数符和第一数值位之间时,机器内的数为纯小数;当小数点位于数值之后时,机器内的数为纯整数。采用定点数的机器称为定点机。在定点机中,由于小数点的位置固定不变,故当机器处理的数不是纯小数或纯整数时,必须乘上一个比例因子,否则会产生“溢出”。

 

 

2.浮点表示

实际上计算机中的处理的数不一定是纯小数或纯整数(如圆周率3.1416),而且有些数据的数值范围相差很大(如电子的质量,太阳的质量),它们都不能直接用定点小数或定点整数表示,但均可用浮点数表示。浮点数即小数点的位置可以浮动的数。

浮点数由阶码j和尾数s两部分组成。阶码是整数,阶符和阶码的位数m合起来反映浮点数的表示范围及小数点的实际位置;尾数是小数,其位数n反映 了浮点数的精度;尾数的符号代表浮点数的正负。

 

3.浮点数的规格化

为了提高浮点数的精度,其尾数必须为规格化数。如果不是规格化数,就要通过修改阶码并同时左右移尾数的办法,使其变成规格化数。将非规格化数转换成规格化数的过程称为规格化。对于基数不同的浮点数,因其规格化数的形式不同,规格化过程也不同。

当基数为2时,尾数最高位为1的数为规格化数。规格化时,尾数左移一位,阶码减1(这种规格化称为向左规格化,简称左规); 尾数右移一位,阶码加1 (这种规格化称为右规格化,简称右规)。

浮点机中一旦基数确定后就不再变了,而且基数是隐含的,故不同基数的浮点数表示形式完全不同。但基数不同,对数的表示范围和精度等都有影响。一般来说,基数r越大,可表示的浮点数范围越大,而且所表示的数的个数越多。但r越大,浮点数的精度反而下降。如r=16的浮点数,因其规格化的尾数最高三位可能出现零,故与其尾数位数相同的r=2的浮点数相比,后者可能比前者多三位精度。

猜你喜欢

转载自xieyaxiong.iteye.com/blog/1797555