数值N可表示为
式中,数值N有m位小数、k+1位整数,di是每位数字的取值,R是该数的基数(radix),是大于或等于2的整数,Ri称为di位的权,或者位值。每位数字的取值范围均为0~R-1。基数取10的,称为十进制数;基数取2的,称为二进制数。
计算机内信息和数据主要用二进制进行表示和运算。而四进制、八进制和十六进制等2的整数幂进位计数制,只是在作为二进制数的缩略表示时被经常使用。不同进位计数制间的转换是经常进行的变换,应熟练掌握它们的变换原理和方法。
对于二进制数(无符号数)的运算,加、减、乘、除是最基本的计算机运算,应熟练掌握。应该知道如何判断运算的结果:正确还是不正确;是否为零。
2.符号数的表示和运算
符号数也是用二进制数表示和运算的。通常用一位二进制数表示数的符号(+或-)。
(1)原码表示(k位表示)
表示范围:(-2k-1+1)~(2k-1-1)。
原码表示可进行数值的乘、除运算,即先进行数值计算,再把结果的符号加上。
(2)反码表示(k位表示)和运算
表示范围:(-2k-1+1)~(2k-1-1)。
数的反码可用于加法和减法运算。
·加法:Z=X+Y+循环进位。
·减法:Z=X+(-Y)+循环进位。
其中,X、Y、Z是反码表示的数,循环进位是X+Y产生的进位,加到结果的最低位。
(3)补码表示(k位表示)和运算
若引入模数的概念,则有
表示范围:-2k-1~(2k-1-1)。
利用补码可进行加、减、乘、除运算,且
X、Y是补码表示的数,Z、W是结果的补码。
这和无符号二进制数的运算方法基本是一样的,只有如下差别。
无符号数运算的进位表示结果溢出,而符号数运算产生的进位应该舍弃,其结果溢出有其他的判别方法:若正数+正数(或正数-负数)得负数,或者负数+负数(或负数-正数)得正数,则表明结果溢出。
因此,若运算结果超出了结果单元能表示的范围,则产生溢出。这必须用其他方法来指示。这就是“标志位”的用途。通常:
·用Z标志位表示结果是否为0;
·用O标志位表示符号数是否溢出(算术溢出);
·用S标志位表示结果是正数还是负数;
·用C标志位表示结果的最高位是否产生了进位(无符号数有溢出)。
显然,它们都是逻辑变量,且“1”表示真,“0”表示假。
3.十进制数的表示和运算
①要表示一位十进制数,至少要用4位二进制数。常用两种方法表示。
·压缩的BCD数:一字节表示两位BCD数。
·非压缩的BCD数:这又有两种表示方法。
a.ASCII码表示:一字节存放一位十进制数。
b.非ASCII码表示:一字节存放一位数字,高位是0。
②十进制运算采用和二进制运算完全相同的办法,但计算结果要修正为十进制数。修正原则如下。
对压缩的十进制数,若相加则结果:
·低位是非十进制数或产生进位,则在低位加6修正;
·若高位产生进位或是非十进制数字,或者高位结果是9,但低位加6修正,则在高位加6修正。
所以,在十进制运算中,低4位向上是否有进位或者借位,应有指示,这就是半进位H或称辅助进位A,或(十六进制或十进制)数字进位DC的作用。标志位A和C是用来作十进制运算结果调整的。
对于非压缩的十进制数(包括ASCII数字)运算,高位进位没有意义,所以,其低位进位A应传递到C标志位,以便向高位结果传送(用连加指令ADC或连减指令SBB)。
4.逻辑变量的表示和运算
在逻辑运算中,C、O、A、S标志位均无意义。但8086和其他的CPU在逻辑运算中都改变S标志位,这时,S标志位只表示最高位逻辑运算的结果,没有其他含义。可利用逻辑运算指令把O、C、A置成某种状态:“0”或“1”。
逻辑运算改变P标志位,指示运算结果“1”的个数的奇偶性。
5.文字在计算机内的表示和操作(www.daowen.com)
计算机中的文字用二进制编码表示(外文或汉字)。除了文字外,以下内容也用二进制编码表示。
·数字:0,1,…,9。
·字母:A~Z,a~z。
·标点和符号:!,。,?,:,“,”,‘,’,{},[],(),$,¥,#,&等。
以上都是打印字符,而设备和文件(记录)控制符、传输控制符等是不可打印字符,它们起到某种控制功能。
为了提高传输的可靠性,经常在被传输信息中加入“多余(冗余)”信息,以便收端能验证信息是正确的还是错误的。最简单、最常用的方法是奇偶校验。因此,标志位中加入了P标志位。
6.浮点数的表示和运算
(1)浮点数的表示
前面的例子用的都是定点整数表示法,即数的小数点位置是固定的,在数的最低位后面。此外,还有定点小数表示法,就是小数点在符号位的后面。
浮点数的小数点位置是不固定的,它随每个数的大小而变化。浮点数的一般表示如下:
其中,M是数N的尾数部分,R是数的基数,P是阶码。
计算机内浮点数的基数通常是2,但也有以4位二进制数为一组,而用R=16为基数的。在基数确定后,浮点数就完全由尾数和阶码决定了。
M和P都包括数值和符号。尾数的符号就是该数的符号;而阶码的符号表示小数点在尾数部分的位置,如下:
其中,SP是阶码P的符号位,SM是尾数M的符号位。
计算机厂家生产的机器的浮点表示法各不相同,尤其是阶码的表示法和“规格化”浮点数的定义。关于浮点数的一些概念如下。
·规格化:移动小数点的位置,使其尾数变成其标准格式的过程。
·对阶:移动一个操作小数点的位置,使两个数的小数点对齐(阶码相同)的过程。
下面以IEEE浮点数表示法为例,说明浮点数的表示和运算规则,以便读者对它有一个基本的了解。
IEEE浮点数分单精度和双精度两种,单精度为32位,双精度为64位。单精度的阶码占8位(连符号位),尾数连符号位共24位。双精度的阶码占11位,尾数连符号位共53位。
单精度浮点数格式如下:
双精度浮点数格式如下:
IEEE浮点数规定:规格化浮点数的小数点在符号位SM的后面,且小数点前有一个“1”,即其尾数可表示1~2之间的数。其阶码连同阶码的符号统一编码。对单精度浮点数,阶码等于0表示2-127,等于7FH表示20,等于FFH表示2128。它所能表示的绝对值最小的数是
若小于该数,则表示为机器零,用全0表示。它能表示的绝对值最大的数是
若超出这一范围,则产生上溢出。
下面是一些单精度浮点数表示的示例。
①+1.0=1.0×20,表示为0011 1111 1000 0…0B=3F800000H。
②-3.0=-1.5×21,表示为1100 0000 0100…0B=C0400000H。
③-128.625=-1.000 488 281 25×27,规格化表示为1100 0011 0000 0000 0001 00…0B=C3001000H。
对于双精度浮点数,其阶码有11位,当阶码是3FFH时,表示20;当阶码为0时,表示2-1 023;当阶码是7FFH时,表示2+1 024。它所能表示的绝对值最小的数是
它所能表示的绝对值最大的数是
(2)浮点数的运算
①浮点数加/减法的运算步骤是:
·对阶,使两个操作数的小数点对齐(阶码相同);
·尾数相加减;
·结果规格化(注意小数点前面有一位隐含的1)。
②浮点数乘/除运算:
·尾数相乘/除,得出积/商及余数的尾数;
·阶码相加/减,得出积/商的阶码;
·对积/商和余数规格化;
·将它们的尾数加上符号位。
(3)浮点数的特点
与定点数相比,浮点数有如下特点:
·浮点数表示的数值范围大;
·一般来说,浮点数运算的精度高;
·浮点运算比定点运算复杂,它所需的硬件设备也多。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。