1.2 计算机中数的表示方法
在讨论计算机如何对有符号数或无符号数进行运算和处理之前,先弄清计算机中数的表示方法是十分必要的。在计算机中,小数和整数都是以二进制形式表示的,但对小数点通常有定点和浮点两种表示方法。小数点采用定点表示法的称为定点机,采用浮点表示法的叫做浮点机。
1.2.1 定点机中数的表示方法
在定点计算机中,二进制数的小数点位置是固定不变的,小数点位置可以固定在数值位之前,也可以固定在数值位之后。前者称为定点小数计算机,后者叫做定点整数计算机。
在理论和习惯上,小数点固定在中间位置比较合适,但因为它所能表示的数既有整数又有小数部分,会给数在数制间替换带来麻烦,故这种方法通常并不为计算机设计师们所采用。
1.定点整数表示法
在采用定点整数表示法的计算机中,小数点位置被固定在数值位之后。因此,这种计算机在实际运算前应先把参加运算的数(二进制形式)按适当比例替换成纯整数,并在运算后把结果操作数按同一比例还原后输出。设N为某一定点二进制整数,其表示形式为
其中,S f为数符,S f=0表示N为正数,S f=1表示N为负数。
数的表示形式在大多数计算机中都是采用定点整数法,MCS-51单片机也是一种定点整数计算机。因此,MCS-51单片机只能对二进制整数进行直接运算和处理,它在遇到二进制小数时,必须把该小数按比例扩大成二进制整数后进行处理,并在处理完后再按同样比例缩小后进行输出。
定点整数表示法的优点是,运算规则简单,它所能表示的数的范围没有相同位数的浮点法大。例如,一个16位的二进制定点整数N,若它的S f占1位、尾数占15位,则它所能表示的原码数的范围为
N≤11…11=100…00-1=215-1,近似形式为-215≤N215
2.定点小数表示法
在采用定点小数表示法的计算机中,小数点的位置被固定在数值位之前。因此,这种计算机在实际运算前应首先把参加运算的二进制整数按适当比例替换成纯小数,并在运算结束后把结果操作数(纯小数)按同样比例逆替换后输出。设N为定点小数,其表示形式为
其中,Sf为数符,Sf=0表示N为正数,Sf=1表示N为负数。
定点小数表示法的优点是,运算规则简单,但它所能表示的数的范围较小。例如,一个16位的二进制小数N,若它的Sf占1位、尾数占15位,则它所能表示的原码数范围为
N≤0.11…11=1-0.00…01=1-2-15即-(1-2-15)≤N≤(1-2-15)
1.2.2 浮点机中数的表示方法
在采用浮点表示的二进制数中,小数点位置是浮动的、不固定的。
通常,任意一个二进制数都可以写为
N=2P×S
式中,S为二进制数N的尾数,代表了N的实际有效值;P为N的阶码,可以决定小数点的具体位置。例如:N=101.11B=23×0.10111B。
因此,任何一个浮点数N都由阶码和尾数两部分组成。阶码部分包括阶符和阶码,尾数部分由数符和尾数组成,其形式为
其中,Pf为阶符,Pf=0表示阶码为正,Pf=1表示阶码为负;Sf为数符,Sf=0表示该数为正数,Sf=1表示该数为负数;小数点的约定位置在尾数之前,实际位置是浮动的,由阶码决定。浮点法的优点是,数的表示范围大。浮点表示法的缺点是,运算规则复杂,通常要对阶码和尾数分别运算。
1.2.3 二进制数的运算
二进制数的运算分为二进制整数运算和二进制小数运算两种类型,但运算法则完全相同。由于大部分计算机中数的表示方法均采用定点整数表示法,故这里仅介绍二进制整数运算,二进制小数运算与它相同。
二进制数的运算比较简单,包括算术运算和逻辑运算。算术运算包括加、减、乘、除运算;逻辑运算包括逻辑乘、逻辑加、逻辑非和逻辑异或等。
1.二进制数的算数运算
(1)加法运算
运算规则为
0+0=0;0+1=1+0=1;1+1=10(向高位进位)
(2)减法运算
运算规则
0-0=0;1-0=1;1-1=0;0-1=1(向高位借1)
(3)乘法运算
运算规则
0×0=0;0×1=1×0=0;1×1=1
(4)除法运算
除法是乘法的逆运算。与十进制类似,二进制除法也是从被除数最高位开始,查找出够减除数的位数,并在其最高位处上商1和完成它对除数的减法运算,然后把被除数的下一位移到余数位置上。若余数不够减除数,则上商0,并把被除数的再下一位移到余数位置上;若余数够减除数,则上商1并进行余数减除数。这样反复进行,直到全部被除数的各位都下移到余数位置上为止。
2.逻辑运算
计算机处理数据时常常要用到逻辑运算。逻辑运算由专门的逻辑电路完成。下面介绍几种常用的逻辑运算。
(1)逻辑乘运算
逻辑乘又称逻辑与,常用∧算符表示。逻辑乘运算法则为
0∧0=0;1∧0=0∧1=0;1∧1=1
(2)逻辑加运算
逻辑加又称逻辑或,常用算符∨表示。逻辑加的运算规则为
0∨0=0;1∨0=0∨1=1;1∨1=1
(3)逻辑非运算
逻辑非运算又称逻辑取反,常采用“_”运算符表示。逻辑非的运算规则为
(4)逻辑异或
逻辑异或又称为半加,是不考虑进位的加法,常采用算符表示。逻辑异或的运算规则为
0⊕0=0;1⊕1=0;1⊕0=0⊕1=1