计算机中信息的表示与运算.ppt
第3章 电子计算机中信息的表示与运算,3.1 电子计算机中数据的表示 3.2 定点数运算 3.3 浮点数的运算 3.4 面向错误检测与纠错的数据编码3.5 电子计算机中字符的表示 3.6 面向存储与传输的数据编码,第3章 电子计算机中信息的表示与运算,3.1 电子计算机中数据的表示 问题 1 如何表示“正/负”?问题 2 如何表示“小数点”?,用“0”表示“+”用“1”表示“”,符号数字化的数叫机器数,原先的数叫真值。,不表示!默认小数点在数值的最前方或者最后方。这样得到的数叫定点数。,带符号的数 符号数字化的数,+0.1011,+1100,1100,0.1011,真值 机器数,机器数与真值,第3章 电子计算机中信息的表示与运算,3.1.1 定点数(Fixed Point Number)的表示0.定点小数与定点整数 若默认小数点在符号位与数值最高位之间,则计算机实现的是定点小数;若默认小数点在数值最低位之后,则计算机实现的是定点整数。1.原码(符号-绝对值)表示法X=+1011010B,X原=0,1011010B;Y=1011010B,Y原=1,1011010B;Z=+0.1101010B,Z原=0.1101010B;K=0.1101010B,K原=1.1101010B。,书写时,在符号位与数值最高位之间加“,”表示数据是定点整数,书写时,在符号位与数值最高位之间加“.”表示数据是定点小数,计算机并不存储“,”/“.”,第3章 电子计算机中信息的表示与运算,3.1.1 定点数的表示【例3-1】设机器字长为8位,X=0101010B,Y=+1010101B,求X原 和Y原=?解:X原=10101010B,Y原=01010101B【例3-2】设机器字长为8位,X=0,求X原=?解:对于零(0)而言,其原码中的符号位取0、取1都可以,所以 X原=10000000B 或 X原=00000000B,零(0)的原码表示有两个:正零和负零,第3章 电子计算机中信息的表示与运算,3.1.1 定点数的表示 原码形式的n位定点整数的表示范围是:(2n11)+(2n11)例如,8位定点整数的表示范围是:(271)+(271),即:127+127;16位定点整数的表示范围是:(2151)+(2151),即:32767+32767原码表示的n位定点小数的表示范围是:(12(n1)+(12(n1),第3章 电子计算机中信息的表示与运算,3.1.1 定点数的表示 为了扩大表数范围,在数据都是正数的情况下,可以把符号位省掉。这样n位定点整数的表示范围是:0+(2n 1)例如,8位定点整数的表示范围是:0+(281),即:0+255;16位定点整数的表示范围是:0+(2161),即:0+65535,可见,定点数又分为带符号数和无符号数。原码和后面介绍的补码、反码都是针对带符号数的。,第3章 电子计算机中信息的表示与运算,原码简单明了,易于和真值转换,但是基于原码实现的加、减运算比较复杂,即在执行的加、减运算时,不能直接运算。需要先判断两个操作数的符号以及两个操作数绝对值的相对大小,然后再执行所需要的运算。,第3章 电子计算机中信息的表示与运算,第3章 电子计算机中信息的表示与运算,能否找到一个与负数等价的正数来代替该负数,然后用加法来代替减法呢?答案是肯定的,就是采用补码来表示数据。,(2)补码,例子,纠正快了2小时的时钟,逆时针,顺时针,时钟以 12为模,结论:,1.两个互为补数的数,它们绝对值之和即为 模 数。,2.一个负数加上“模”即得该负数的补数。,3.正数的补数即为其本身。,补 码 的 实 例,计数器(模 16),1011,1011,0000,+0101,1011,10000,补 码(符号数字化的补数),如,x=+1010,=100000000,x补=0,1010,1,0101000,用 逗号 将符号位和数值位隔开,N位定点整数,小数,x 为真值。,x=+0.1110,如,x补=0.1110,1.0100000,=10.0000000,在机器字长为8位时,+1补=0,0000001B,+127补=0,1111111B,1补=28 1=1,1111111B,127补=28 127=1,0000001B,+0补=00000000B,0补=28 0=0000000B,在补码中,零只有一种形式。那么,原码中用于表示负零的那个码点10000000B在定点整数补码中被用来表示2n 1,例如128(n=8);在定点小数补码中被用来表示-1。,求补码的口诀,=100000,=1,0110,10101+1,=1,0110,因 x原=1,1010,+1,课堂练习,例3-3 设机器字长为8位,X=46,求X补=?解:X原=10101110B。除了符号位外,对X原每位取反得到11010001B,在最低位加1得到11010010B。所以X补=11010010B例3-4 设机器字长为16位,Y=116,求Y补=?解:Y原=1000 0000 0111 0100 B,则Y补=1111 1111 1000 1100 B=FF8CH,观察上面两道例题的结果,一个负数的原码从它的低位算起,遇到第一个“1”时,原码与补码是相同的。超过这个“1”直至符号位之间的那段数位,原码与补码是相反的。,十六进制形式,第3章 电子计算机中信息的表示与运算,3.1.1 定点数的表示 补码形式的n位定点整数的表示范围是:2n1+(2n11)例如,8位定点整数的表示范围是:27+(271),即:128+127;16位定点整数的表示范围是:215+(2151),即:32768+32767补码表示的n位定点小数的表示范围是:1+(12(n1),第3章 电子计算机中信息的表示与运算,反码通常作为由原码求补码 或 由补码求原码的中间过渡。对于正数,反码与原码和补码相同,直接在二进制数值前面加上符号位“0”即可。对于负数,反码就是将负号“”替换成“1”,然后将二进制数值逐位取反而得到。在反码中,零有两个编码:+0反=000000B,0反=111111B。,(3)反码,-0,-1,-128,-127,-127,-126,-3,-2,-1,设机器数字长为 8 位(其中一位为符号位)对于整数,当其分别代表无符号数、原码、补码和反码时,对应的真值范围各为多少?,第3章 电子计算机中信息的表示与运算,原码、补码和反码,它们的一个共同特点就是将符号作为最高位与其数值部分一起编码,而且正号用“0”表示,负号用“1”表示。这就给比较不同符号的数据的相对大小带来了麻烦。在机器看来,正数小于负数。给每一个二进制整数的真值加上一个常数2n(n为真值的位数),使得正数的最高位变成“1”、负数的最高位变成“0”,那么,机器比较得到的两个数之间的相对大小就是其真实的相对大小,这样得到的编码就称为“移码”。,(4)移码(自学),第3章 电子计算机中信息的表示与运算,例如,X=0101011B,Y=0101011B,则 X移=27+X=10000000B+0101011B=10101011B;Y移=27+Y=10000000B+(0101011B)=01010101B;比较其大小,10101011B01010101B,所以XY。,(4)移码,同一个真值的移码与其补码的差别仅仅是最高位相反。如果将补码符号位中的“0”改为“1”或者“1”改为“0”,即可得到该真值的移码。,第3章 电子计算机中信息的表示与运算,例如,X=+0000000B,Y=0000000B,则X移=27+X=10000000B+0000000B=10000000B;Y移=27+Y=10000000B+(0000000B)=10000000B;所以,+0移=0移,在移码中零有唯一的编码。,(4)移码,移码仅针对定点整数而言的,定点小数没有移码的定义,第3章 电子计算机中信息的表示与运算,3.1 电子计算机中数据的表示 3.1.1 定点数的表示 3.1.2 浮点数的表示,计算机只能识别定点数。浮点数怎样处理呢?,借助于数学中的“科学记数法”,把浮点数转化成定点数。,第3章 电子计算机中信息的表示与运算,3.1.2 浮点数(Float-point Number)的表示 一个浮点数 N 将被表示成:N=M RE。其中,M 称为尾数,是一个带小数点的实数;R称为基值,是一个常整数;E称为阶码,是一个整数。,在计算机中用定点小数表示,一般取2,也可取8或16,第3章 电子计算机中信息的表示与运算,3.1.2 浮点数的表示,浮点数的编码格式,尾数越长,表示的精度越高;阶码越长,表示的范围越高。在固定长度的浮点数格式内,这两者是一对矛盾,第3章 电子计算机中信息的表示与运算,3.1.2 浮点数的表示 为了利用尾数所占的二进制数位来表示最多的有效数字,浮点数一般采用“规格化形式”。所谓“规格化形式”是指尾数绝对值的最高位(第一位)必须为1,即尾数绝对值必须大于或等于1/R,这样浮点数就有n个有效数字了。,第3章 电子计算机中信息的表示与运算,3.1.2 浮点数的表示 通过移动尾数小数点的位置,可将不规格化浮点数转化成“规格化”(Normalize)浮点数。尾数的小数点每向左/向右移动1位,就应该给阶码+1或-1,以保证浮点数数值不变。,在计算机中,小数点的位置是固定的,所以只能移动尾数。“规格化”在计算机内部的操作是,尾数每向左/向右移动1位,阶码就-1/+1。,第3章 电子计算机中信息的表示与运算,3.1.2 浮点数的表示 在规格化过程中,当浮点数阶码小于最小阶码时,称发生“下溢”(Underflow)。这时阶码(采用移码表示)为全0,又由于发生“下溢”的浮点数的绝对值很小,所以机器强制把尾数置成全0,这样整个浮点数的所有数位就都是0,便于实现“判断一个数是否为零”。这样得到的浮点数零称为机器零。机器零是一个特殊的合法的浮点数编码,尽管它不符合规格化表示的要求。,第3章 电子计算机中信息的表示与运算,3.1.2 浮点数的表示 同样地,在规格化过程中,浮点数的阶码还会出现“大于最大阶码”的现象,即全1的阶码(采用移码表示)在加1后变成了全0,计算结果的绝对值超出了定长浮点数所能表示的最大绝对值,这种现象称为“上溢”(Overflow)。这时,机器将停止运算,进行溢出处理。可见,浮点数的溢出是由阶码溢出导致的。,上溢 阶码 最大阶码 停机进入出错处理下溢 阶码 最小阶码 按 机器零 处理,第3章 电子计算机中信息的表示与运算,第3章 电子计算机中信息的表示与运算,例3-5 设机器字长为16,请将26分别表示成二进制定点数和规格化的浮点数。其中浮点数的阶码占5位(含一位阶符),尾数占11位(含一位数符)。解:设X=26=11010B,采用科学计数法表示成X=0.11010B2101B,所以,X原=1,000000000011010 X补=按照规格化浮点数的编码格式,X表示为 X原=0,0101;1.1101000000 X补=0,0101;1.0011000000,第3章 电子计算机中信息的表示与运算,例3-6 请写出53/512对应的数,分别用原码和补码表示的规格化浮点数(设浮点数格式同上例,阶码用移码表示)。解:53/512=0.000110101B=(0.110101B)211B 原码表示尾数:1.1101010000;补码表示尾数:1.0010110000;原码表示阶码:1,0011;补码表示阶码:1,1101;移码表示阶码:0,1101。原码尾数的规格化浮点数:0,1101;1.1101010000;补码尾数的规格化浮点数:0,1101;1.0010110000。,第3章 电子计算机中信息的表示与运算,3.1.2 浮点数的表示 为了便于软件的移植和对软件中浮点数运算发生特殊情况时进行处理,并鼓励开发面向数值计算的优秀程序,IEEE于1985年推出了“浮点数表示及运算标准”,即IEEE标准 754。目前几乎所有的微处理器都采用这一标准。由于该标准的成功,它的设计者Kahan因此荣获1989年“图灵奖”。,感兴趣的同学,请自行阅读、了解。,第3章 电子计算机中信息的表示与运算,3.1 电子计算机中数据的表示 3.2 定点数运算 3.2.1 逻辑运算 3.2.2 移位运算3.2.3 加法与减法运算3.2.4 乘法运算(自学)3.2.5 除法运算(自学),第3章 电子计算机中信息的表示与运算,3.1 电子计算机中数据的表示 3.2 定点数运算 3.2.1 逻辑运算,逻辑运算的特点是按位进行,每一位运算后得到一个独立的结果,对其他位没有影响。因此,逻辑运算不存在进位、借位、溢出等问题。常见的逻辑运算有逻辑非(NOT)、逻辑加(OR)、逻辑乘(AND)和逻辑异或(XOR).,第3章 电子计算机中信息的表示与运算,3.2.1 逻辑运算,逻辑非,也叫“按位取反”或“按位求非”,就是对数据的每一位取反,将1变成0,0变成1。例如,X=0101 0101B,NOT X=1010 1010B 实现“逻辑非”的电路叫做“非门”,如下图所示。,第3章 电子计算机中信息的表示与运算,3.2.1 逻辑运算,逻辑加,也称“按位求逻辑或”运算,它的运算符是“OR”或“”。其运算规则是:11=1,10=1,01=1,00=0。例如,X=0101 0101B,Y=1110 0010B。X OR Y=1111 0111B。实现“逻辑加”的电路叫做“或门”,如下图所示,第3章 电子计算机中信息的表示与运算,3.2.1 逻辑运算,逻辑乘,也称“按位求逻辑与”运算,它的运算符是“AND”或“”。其运算规则是:11=1,10=0,01=0,00=0。例如,X=0101 0101B,Y=1110 0010B。X AND Y=01000000B。实现“逻辑乘”电路叫做“与门”,如下图所示,第3章 电子计算机中信息的表示与运算,3.2.1 逻辑运算,“逻辑异或”的运算符是“XOR”或者“”。其运算规则是:当两个操作数相异时,结果为“真(1)”,否则为“假(0)”,即11=0,10=1,01=1,00=0。这个运算规则与忽略进位的“二进制加法”相同,所以“逻辑异或”也称“按位加”。例如,X=0101 0101B,Y=1110 0010B。X XOR Y=10110111B。实现“逻辑异或”的电路叫做“异或门”,如右图所示.,第3章 电子计算机中信息的表示与运算,3.2 定点数运算 3.2.1 逻辑运算 3.2.2 移位运算,1.概述 移位运算,也称移位操作,是指在小数点位置固定不变的情况下,将一个二进制数左移或右移n位。对于一个定点数,将其左移n位,相当于该数乘以2n;将其右移n位,相当于该数除以2n。,第3章 电子计算机中信息的表示与运算,计算机总是用定长的二进制位来表示一个数据。当数据左移或右移n位后,必然会使其低n位或高n位出现空位。那么,对于空出来的数位应该填补0还是填补1呢?这与机器数被当作有符号数还是无符号数有关。有符号数的移位称为算术移位,无符号数的移位称为逻辑移位。,3.2.2 移位运算,第3章 电子计算机中信息的表示与运算,2.算术移位 算术移位的基本规则是:符号位保持不变,左移或右移移出的空位补0。所以对于正数,算术移位出现的空位补0。对于负数,若用原码表示,算术移位出现的空位也补0;若用反码表示,算术移位出现的空位则补1。补码表示的负数的空位补位原则是什么?,3.2.2 移位运算,第3章 电子计算机中信息的表示与运算,2.算术移位 补码的特点:一个负数的原码从它的低位算起,遇到第一个“1”时,原码与补码是相同的;超过这个“1”直至符号位之间的那段数位,原码与补码是相反的。所以,右移移出的空位位于符号位之后,填补的内容应与原码相反,即补1。左移移出的空位是由它的低位生出的,填补的内容应与原码相同,即补0。,3.2.2 移位运算,第3章 电子计算机中信息的表示与运算,不同码制下机器数移位后的空位填补规则,3.2.2 移位运算,第3章 电子计算机中信息的表示与运算,3.逻辑移位 逻辑移位处理的是无符号数,所以它的基本规则是:无论左移还是右移,移出的空位都补0。例如:(1)寄存器内容为01010011 逻辑左移1位:10100110,算术左移1位:10100110;(2)寄存器内容为10110010 逻辑右移1位:01011001,若视为补码,算术右移为11011001,3.2.2 移位运算,第3章 电子计算机中信息的表示与运算,3.2 定点数运算 3.2.1 逻辑运算 3.2.2 移位运算3.2.3 加法与减法运算,计算机通过引入补码将定点数的加、减运算都统一成加法运算,所以参加加、减运算的操作数都必须表示成补码。采用补码进行计算还有一个好处,结果的符号位不用单独处理,它是在运算过程中自然形成的。这是采用原码进行计算所不具有的,大大简化了硬件设计。,第3章 电子计算机中信息的表示与运算,3.2 定点数运算 3.2.3 加法与减法运算,设n为机器数字长,则补码的加法公式是 X+Y补=X补+Y补(mod 2n)补码的减法公式是 X Y补=X补+Y补(mod 2n)其中,Y补的求法是:将Y补的各位(连同符号位)逐位取反,末位加1,即Y补=Y补。,第3章 电子计算机中信息的表示与运算,3.2.3 加法与减法运算,例3-8 设机器数字长为8位,若X=+10101B,Y=+11B,求X-Y=?解:因为:X-Y补=X补+-Y补 X补=0 0010101B,Y补=0 0000011B,-Y补=1 1111101B所以X-Y补=X补+-Y补=0 0010101+1 1111101=0 0010010 则 X-Y=+10010B,第3章 电子计算机中信息的表示与运算,例3-9 设机器数字长为8位,若X=0101010B,Y=1010B,求X+Y=?解:X补=1 1010110B,Y补=1 1110110B。所以X+Y补=1 1010110B+1 1110110B 1 1 1001100B 在模28的意义下,超出字长的数位丢弃,即X+Y补=1 1001100B,则X+Y=110100B,3.2.3 加法与减法运算,第3章 电子计算机中信息的表示与运算,例3-10 设机器数字长为8位,若X=+1110101B,Y=+0001100B,求X+Y=?解:X补=0 1110101B,Y补=0 0001100B。所以 X+Y补=0 1110101B+0 0001100B 1 0000001B即X+Y补=1 0000001B,则X+Y=1111111B 参加运算的两个操作数都是正数,但是加法运算的结果却是一个负数,说明结果错误。,3.2.3 加法与减法运算,?,第3章 电子计算机中信息的表示与运算,这就是目前计算机在实现计算时特有的一个现象“溢出”。导致“溢出”的原因是计算机字长是固定的,数值最高位产生的进位1被字长最高位吸收。这个“1”的属性本来是数值,却被当作了符号。,3.2.3 加法与减法运算,第3章 电子计算机中信息的表示与运算,如何判断溢出?当两个同号的操作数相加时,如果它们的绝对值相加的结果超出了操作数数值部分所能表示的最大值,则发生“溢出”。表现为结果的符号与操作数的符号相反。如果是两个异号的操作数相加,则绝对不会发生“溢出”。事实上,“溢出”是相对的,只要字长再增加1位,原先的“溢出”就不会出现。例如,操作数采用双符号位,即便发生“溢出”,也能够保存结果。,(1)单符号位判溢出,参加加法操作的 两个数(减法时即为被减数和“求补”以后的减数)符号相同,其结果的符号与原操作数的符号不同,即为溢出。,硬件如何实现?,如,有 溢出,无 溢出,溢出,第3章 电子计算机中信息的表示与运算,判断溢出的硬件电路,(2)双符号位判溢出,结果的双符号位 相同 未溢出,结果的双符号位 不同 溢出,最高符号位 代表其 真正的符号,采用双符号位的补码称为模4的补码,也称变形补码。,第3章 电子计算机中信息的表示与运算,第3章 电子计算机中信息的表示与运算,例3-12 设采用双符号位,若X=+1110101B,Y=+0001100B,求X+Y=?解:X补=00 1110101B,Y补=00 0001100B。所以X+Y补=00 1110101B+00 0001100B 01 0000001B 即X+Y补=01 0000001B。双符号位取值不同,表示发生了“溢出”。但最高符号位仍表示结果的符号!,第3章 电子计算机中信息的表示与运算,3.1 电子计算机中数据的表示 3.2 定点数运算 3.3 浮点数的运算 3.4 面向错误检测与纠错的数据编码检验码:检错码和纠错码奇偶检验码汉明码 循环冗余检验码CRC,第3章 电子计算机中信息的表示与运算,3.4 面向错误检测与纠错的数据编码1.奇偶检验码 就是给每一个数据代码增加一个二进制位作为奇偶检验位(Parity Bit)。这个检验位取0还是取1的原则是:奇检验:代码中1的个数加上检验位共有奇数个1;偶检验:代码中1的个数加上检验位共有偶数个1。,例如,传输数据为0101011奇校验码10101011;偶校验码00101011,3.4 面向错误检测与纠错的数据编码奇偶检验码 奇偶校验码具有检测错误的能力,但是不具有纠错能力。此外,一旦传输过程中出现了两位错误,奇偶性不变,也无法判断出错。,第3章 电子计算机中信息的表示与运算,第3章 电子计算机中信息的表示与运算,3.4 面向错误检测与纠错的数据编码1.奇偶检验码2.汉明码:能检测所有一位和双位差错并纠正所有一位差错的二进制代码。3.循环冗余检验码CRC:可以发现并纠正信息在存储或传送过程中连续出现的多位错误代码。,详细内容请同学们自行阅读、了解。,第3章 电子计算机中信息的表示与运算,3.1 电子计算机中数据的表示 3.2 定点数运算 3.3 浮点数的运算 3.4 面向错误检测与纠错的数据编码3.5 电子计算机中字符的表示,1.十进制数的编码 2.EBCDIC码 3.ASCII码4.汉字编码5.Unicode码,第3章 电子计算机中信息的表示与运算,3.5 电子计算机中字符的表示,1.十进制数的编码 字符串形式压缩的十进制数串形式,每一位十进制数当作一个字符,用1字节的编码(如ASCII码)来表示。一个十进制数表示成一个多字节的字符串。,用4位二进制数来表示一位十进制数。即1字节表示两位十进制数。这种形式称为BCD码。,第3章 电子计算机中信息的表示与运算,3.5 电子计算机中字符的表示,2.EBCDIC码 IBM公司在它的大型机和中型机中采用的基于BCD码的字符和数字编码“扩展的BCD交换码”(Extended Binary Coded Decimal Interchange Code,EBCDIC)。,在微机中仍采用下面要介绍的ASCII码。,第3章 电子计算机中信息的表示与运算,3.5 电子计算机中字符的表示,3.ASCII码 美国信息交换标准编码(American Standard Code for Information Intelchange,ASCII)。ASCII码采用7位二进制数的不同编码来表示128个符号(见图3-5)。目前,ASCII码已经被国际标准化组织ISO和国际电报电话咨询委员会CCITT接纳为国际信息交换标准代码。,第3章 电子计算机中信息的表示与运算,3.5 电子计算机中字符的表示,4.汉字编码 汉字在计算机内存储、交换、检索时采用的二进制编码称为汉字机内码。计算机的键盘是为输入英文而设计的。要想利用键盘来输入汉字,就必须建立汉字输入编码。无论是英文字符还是汉字字符,在输出时一般被当作一个由点阵组成的图形字模。所以,显示汉字还有需要相应的字模码。,第3章 电子计算机中信息的表示与运算,3.5 电子计算机中字符的表示,5.Unicode码 1991年,Unicode联盟提出了“统一的字符编码标准”Unicode编码。它的编码长度有16位,能表示世界上所有语言的绝大多数字符。另外,Unicode编码还设计有一种能够再表示100万个字符的扩展方法,这就保证了它具有表示人类文明史上所有书写语言全部字符的能力。,第3章 电子计算机中信息的表示与运算,3.5 电子计算机中字符的表示,5.Unicode码 尽管Unicode的优点明显,但是大多数厂商还只是对它提供有限的支持。Unicode目前只是Java语言和Windows XP操作系统的默认字符集。对Unicode编码的详细内容和最新进展感兴趣的同学,请访问Unicode编码官方网站。,第3章 电子计算机中信息的表示与运算,3.1 电子计算机中数据的表示 3.2 定点数运算 3.3 浮点数的运算 3.4 面向错误检测与纠错的数据编码3.5 电子计算机中字符的表示 3.6 面向存储与传输的数据编码,请同学们自行阅读、了解。,