附、数制和编码_第1页
附、数制和编码_第2页
附、数制和编码_第3页
附、数制和编码_第4页
附、数制和编码_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机中的数制与码制计算机中的数制与码制内容要求内容要求1.2,10,16进制之间的转换(包括整数和小数);进制之间的转换(包括整数和小数);2.数的原码、反码和补码表示(整数),包括表示数的原码、反码和补码表示(整数),包括表示范围和表示方法;范围和表示方法;3.补码的加、减运算,以及溢出判断。补码的加、减运算,以及溢出判断。习题一习题一1.写出写出8位和位和16位原码、反码和补码的表示范围。位原码、反码和补码的表示范围。2.数制数制转换转换:248D = H; 101011011001B = H;120.5625D = B; 7FFFH = D。3.写出下列各数的写出下列各数的8位原码、补

2、码和反码位原码、补码和反码1100110B:原原码码 ,补码,补码 , 反码反码 。-1101011B:原码原码 ,补码,补码 , 反码反码 。-11100B:原原码码 ,补码,补码 , 反码反码 。习题一习题一4.已知已知x补补,求,求x的真值的真值x补补 = 11110001B,x = B;x补补 = 00111001B,x = B;5.已知已知x的的8位原码,求位原码,求x的的8位补码和反码位补码和反码x原原=11001100B,x补补= B;x反反 = B;x原原=01001111B,x补补= B;x反反 = B;6.用用8位补码加法计算下列各题,并判断是否溢出?位补码加法计算下列各题

3、,并判断是否溢出? X = 0010110B, Y = 0110111B,X+Y补补 = B,溢出否?,溢出否? X = -1110001B, Y = -000111B,X+Y补补 = B,溢出否?,溢出否? X = -1110001B, Y = 1111110B,X-Y补补 = B,溢出否?,溢出否? 十进制十进制(Decimal)、二进制、二进制(Binary) 、 十六进制十六进制(Hexadeimal)数及其相互间的转换数及其相互间的转换十进制数:十进制数: 1 2 3. 4 511022101310041015102 即即 123.45=1102 +2101 +3100 + 4101

4、 +5102 一、一、无符号数的表示及运算无符号数的表示及运算 二进制数:(逢二进一)二进制数:(逢二进一)1101.1B =123+122+ 021+121+120= 8 + 4 + 0 + 1+ 0.5=13.5十六进制数十六进制数:(逢十六进一)(逢十六进一)0、1、2、3、4、5、6、7、8、9、 A、B、C、D、E、F共十六个数码,共十六个数码,. 其中其中 A、 B、 C、 D、 E、 F 对应十进制数对应十进制数: 10、11、12、13、14、15 A5D.8H= + 516 1 + 8161 = 2560 + 80+ 0.5 = 2653.5+ 1316 0 + 13 16

5、2 10二进制二进制 十六进制十六进制 24 =16 4位二进制数共有下列位二进制数共有下列16种组合:种组合:0000、0001、0010、0011、 1110、1111由此可见,每位十六进制数可对应由此可见,每位十六进制数可对应4 4位二进制数。位二进制数。0000 0001 0010 0011 1110 11110 1 2 3 E F十进制十进制十六进制十六进制二进制二进制00000011000122001033001144010055010166011077011188100099100110A101011B101112C110013D110114E111015F1111例例 2 4B

6、F.CH=. 0100 1011 1111. 1100B例例1 11 0101 1101.11B CHD.110 1010 1110.111BEH= 6E.A=35 以小数点为界,向左(整数部分)每以小数点为界,向左(整数部分)每4位为一组,高位不足位为一组,高位不足4位时补位时补0;向右(小数部分)每;向右(小数部分)每4位为一组,低位不足位为一组,低位不足4位时补位时补0。然后分别用对应的十六进制数表示每组中的然后分别用对应的十六进制数表示每组中的4位二进制数。位二进制数。 二进制数转换为十六进制数二进制数转换为十六进制数 十六进制数转换为二进制数:十六进制数转换为二进制数: 直接将每位十

7、六进制数写成其对应的直接将每位十六进制数写成其对应的4位二进制数。位二进制数。 例例 3 1010 1110B .89 = AEH=10161 + 14 160 =17459H= 101 1001B1010 1110 1111B = AEFH=1016 2 + 14 16 1 + 15 = 2560 +224 + 15 =2799125 =7DH = 111 1101B通过十六进制通过十六进制二进制二进制 十进制十进制(89 16 =(125 16 =5 9)7 13)机器数:最高位机器数:最高位0表示正数,表示正数,1表示负数。表示负数。00010010表示真值表示真值 011 0101B

8、二、二、带符号数的表示及运算带符号数的表示及运算 例如例如:.表示真值表示真值 + 001 0010B .10010010表示真值表示真值 001 0010B = 18 .10110101机器数与真值机器数与真值= +18 .= 53 .例例 4 x = + 1010111 y = 1010111 .x原原= 0 1010111 y原原=1 1010111 .1. 原码原码符符号号位位绝绝对对值值符符号号位位绝绝对对值值x反反 = 00110100 y反反 = 110010112. 反码反码负数的反码为:负数的反码为:其原码中符号位不变,其余各位取反。其原码中符号位不变,其余各位取反。正数的反

9、码与其原码相同。正数的反码与其原码相同。例例5 x = +0110100 y = 01101003. 补码补码正数的补码与其原码相同正数的补码与其原码相同。.(正数的原码、反码、补码均相同正数的原码、反码、补码均相同) .负数的补码为:其反码的最低位加负数的补码为:其反码的最低位加1。.例例 6 x = + 0110100 y = 0110100 x补补=00110100 y反反= 11001011y补补= 11001100例例 6 x = +0110100 y = 0110100 x补补= 00110100 y反反= 11001011 y补补= 11001100符符号号位位各位取反各位取反y

10、= 0 1 1 0 1 0 0最末最末1 1及其及其之后之后0 0不变不变由负数的原码(或由真值)直接求其补码由负数的原码(或由真值)直接求其补码: . y补补 = 1 1 0 0 1 1 0 092=7 (减法减法)补码的概念及其应用补码的概念及其应用设标准时间为设标准时间为7时正时正,钟面时间为钟面时间为9时正时正。 (快快2小时小时)校准时钟方法校准时钟方法:(1)逆时针拨逆时针拨2小时小时自然丢失自然丢失(2)顺时针拨顺时针拨10小时小时9 + 10 = 12 + 7 = 7 (加法加法)称称“10”是是“2”对对模模“12”的补(码)的补(码)。 同理同理 1补补=11、 3补补=

11、9 、 、11补补=1 记为记为 2补补 = 12 + (2) = 10 (mod 12)在在n位二进制整数系统中模为位二进制整数系统中模为 2n 。补码的定义补码的定义 02 2 120 11xxxxxnnn|)(补补即即 )(n2 mod 2xxn 补补)( 12211 nnx式中式中补码的概念及其应用补码的概念及其应用补码的加减运算补码的加减运算x+y补补=x补补+y补补式中式中 x、y 可为正数或负数。可为正数或负数。证明:证明: x+y补补 = 2n +(x+y)=(2n +x)+(2n +y)= x补补 + y补补(mod 2n) )(n2 mod 2xxn 补补模模128自然丢失

12、自然丢失在在8位二进制整数系统中模为位二进制整数系统中模为28 = 256 .例例 7 x =4、y=14,用补码求,用补码求x+y。x补补=000 0100补补=1111 1100y补补=000 1110补补=1111 0010 1 1 1 1 1 1 0 0 + 1 1 1 1 0 0 1 0 x+y=0 0 1 0 0 1 0B1 1 1 1 0 1 1 1 0 x+y补补=18解解 补码的加减运算补码的加减运算例例 8 x =33,y = 45,用补码分别求,用补码分别求 x+y、xy。解解 x=33=21H=010 0001B y补补=11010011x补补=00100001y补补=

13、00101101y=45=2DH=010 1101B 00100001+ 11010011 11110100 x+y补补=01001110 00100001 + 00101101 01001110 x+y = +1001110Bxy补补=11110100 xy = 0001100B= + 4EH=78=0CH=12补码的加减运算补码的加减运算 从上述补码运算规则和举例可以看出,在计算机从上述补码运算规则和举例可以看出,在计算机中用补码表示带符号数优点明显,且带符号数和无符中用补码表示带符号数优点明显,且带符号数和无符号数的加法和减法运算可用同一加法器完成,结果都号数的加法和减法运算可用同一加法

14、器完成,结果都是正确的。例如:是正确的。例如: 机器运算机器运算 00010010+ 11001110 11100000代表无符号数代表无符号数 1 8+ 2 0 6 2 2 4代表带符号代表带符号数数 + 18补补+ 50补补 32补补补码的加减运算补码的加减运算+ 1. 1 1 0 1 1 1 1纯小数情况纯小数情况 .例例 9 x=0.1010101, y=0.0010001, 用补码求用补码求x+y。x补补= 1.0101011 y补补=1.1101111模模121=2自然丢失自然丢失.1. 0 1 0 1 0 1 11 1. 0 0 1 1 0 1 0 x+y =0.1 1 0 0

15、1 1 0B0.1010101+)0.00100010.1100110解解 验算结果正确二进制数编码二进制数编码对 应 十 进 制 真 值无符号数无符号数原码原码反码反码补码补码0000 00000+0+0+00000 00011+1+1+10000 00102+2+2+20111 1110126+126 +126 +1260111 1111127+127 +127 +1271000 000012801271281000 000112911261271000 001013021251261111 1101253125231111 1110254126121111 111125512701表表1

16、 1 8 8位二进制整数编码的各种表示方法对照位二进制整数编码的各种表示方法对照 溢出是指带符号数的补码运算溢出,用来判断溢出是指带符号数的补码运算溢出,用来判断带符号数补码运算结果是否超出了补码所能表示的范带符号数补码运算结果是否超出了补码所能表示的范围。例如,字长为围。例如,字长为n位的带符号数,它能表示的补码位的带符号数,它能表示的补码范围为范围为2n1 +2n11,如果运算结果超出此范围,如果运算结果超出此范围,就叫补码溢出,简称溢出。就叫补码溢出,简称溢出。 溢出及其判断方法溢出及其判断方法 1. 进位与溢出进位与溢出 进位是指运算结果的最高位向更高位的进位,进位是指运算结果的最高位

17、向更高位的进位,用来判断无符号数运算结果是否超出了计算机所能表用来判断无符号数运算结果是否超出了计算机所能表示的最大无符号数的范围示的最大无符号数的范围。即即在在n位二进制整数系统中模为位二进制整数系统中模为 2n 。补码的定义补码的定义 02 2 120 11xxxxxnnn|)(补补 )(n2 mod 2xxn 补补)( 12211 nnx式中式中溢出及其判断方法溢出及其判断方法 例例 10 x = +126、y = + 5; x=126、 y=5, 用用8位补码计算位补码计算 x+y。 1 0 0 0 0 0 1 0 + 1 1 1 1 1 0 1 1 0 1 1 1 1 1 0 1 x

18、+y补补= 01111101 x+y = +1111101B0出错原因出错原因: 1265 =131128 0 1 1 1 1 1 1 0+ 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 1 x+y补补=10000011 x+y = 1111101B0 (结果错误结果错误)(结果错误结果错误)(正溢出正溢出)(负溢出负溢出)解解 x补补=01111110 x补补=10000010 y补补= 00000101 y补补=11111011 +126 + 5 = +131+127 2. 溢出的判断方法溢出的判断方法. 通过比较参加运算的两个数的符号及运算结果的通过比较参加运算的两个数的符

19、号及运算结果的符号进行判断。符号进行判断。 同号数据相加,若结果的符号相同则无溢出;若同号数据相加,若结果的符号相同则无溢出;若结果的符号不相同则溢出(如前例结果的符号不相同则溢出(如前例10)。)。 单符号位比较法单符号位比较法.异号数据相加,结果不会发生溢出。异号数据相加,结果不会发生溢出。 0 1 1 1 1 0 1 1 1 0 0 0 0 1 0 1 + 0 0 0 0 0 0 1 1 + 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 0 1 0 0 0 0 0 1 0(无溢出,结果正确无溢出,结果正确) (无溢出,结果正确无溢出,结果正确)x+y补补=01111110

20、x+y补补=10000010= +126 =126 x+y= +1111110B x+y=1111110B例例11 x= +123、y= +3; x=123、y=3 用用8位补码计算位补码计算x+y。 解解 x补补=01111011 x补补=10000101 y补补=00000011 y补补=11111101 双进位法双进位法. 通过符号位和数值部分最高位的进位状态来判断通过符号位和数值部分最高位的进位状态来判断结果是否溢出。结果是否溢出。C7CFC6数值位数值位67CCOF b7 b6 b1 b0 x7 y7x1 y1=1 x0 y0 x6 y6=1 =1 =1 OF=1方式控制方式控制MM

21、= 0 加加M=1 减减全加器全加器异或门异或门 ,无无溢溢出出,有有溢溢出出01CCOF67 若最高位的进位状态和次高位的进位状态不同若最高位的进位状态和次高位的进位状态不同则溢出;若最高位的进位状态和次高位的进位状态则溢出;若最高位的进位状态和次高位的进位状态相同则无溢出。相同则无溢出。 有进位:有进位: C7=1, C6=1无进位:无进位: C7=0, C6=0 例例12 用补码求用补码求 55 + 66 ,并判断结果是否发生溢出。,并判断结果是否发生溢出。解解 55 =37H=0110111B 66 =42H=1000010B 55补补 =00110111 66补补= 01000010

22、 0 0 1 1 0 1 1 1 + 0 1 0 0 0 0 1 0 0 1 1 1 1 0 0 10CCOF 0C0C6767 、无溢出,结果正确。无溢出,结果正确。 55+66补补=01111001 55 + 66 = +1111001B =79H=121 0CCOF 1C1C6767 ,、例例13 用补码求用补码求14 +(59),并判断结果是否发生溢出,并判断结果是否发生溢出解解 14 =0001110B ,59 =3BH=0111011B 14补补=11110010 59补补 =11000101 1 1 1 1 0 0 1 0+ 1 1 0 0 0 1 0 1 1 0 1 1 0 1

23、 1 1、1无溢出,结果正确。无溢出,结果正确。 1459补补=1011011114 + (59) =1001001B=49H=73解解 98 = 62H=1100010B 45 =2DH=0101101B 98补补= 01100010 45补补= 00101101 1CCOF 1C0C6767 ,、有溢出,结果错误。有溢出,结果错误。 0 1 1 0 0 0 1 0+ 0 0 1 0 1 1 0 1 1 0 0 0 1 1 1 1、例例 14 用补码求用补码求98 +45,并判断结果是否发生溢出。,并判断结果是否发生溢出。解解 93 = 5DH=1011101B 59 = 3BH=01110

24、11B 93补补=10100011 59补补 =11000101 1 0 1 0 0 0 1 1+ 1 1 0 0 0 1 0 1 0 1 1 0 1 0 0 0、1 1CCOF 0C1C6767 ,、有溢出,结果错误。有溢出,结果错误。 例例15 用补码求用补码求93 +(59),并判断结果是否发生溢出,并判断结果是否发生溢出 双符号位法(变形补码法)双符号位法(变形补码法)变形补码:正数的符号位用变形补码:正数的符号位用00表示;表示; 负数的符号位用负数的符号位用11表示。表示。 若结果的双符号为若结果的双符号为01或或10则溢出;则溢出; 若结果的双符号为若结果的双符号为00或或11则

25、无溢出。则无溢出。 通过运算结果的两个符号位的状态来判断结果通过运算结果的两个符号位的状态来判断结果是否溢出:是否溢出:0 0 1 1 1 1 1 1 0+ 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 1(正溢出,结果错误正溢出,结果错误)例例16 X= +126、Y= +5; X=126、Y=5 用变形补码计算用变形补码计算X+Y。解解 X补补=001111110 X补补=1100000101 0 1 1 1 1 1 0 11 1 0 0 0 0 0 1 0+ 1 1 1 1 1 1 0 1 1Y补补=000000101 Y补补=111111011(负溢出,结果错误负

26、溢出,结果错误) Y补补=000000011 Y补补=1111111010 0 1 1 1 1 0 1 1+ 0 0 0 0 0 0 0 1 10 0 1 1 1 1 1 1 0(无溢出,结果正确无溢出,结果正确)X+Y补补=001111110 X+Y= +1111110B= +126例例17 X= +123、Y= +3 X=123、 Y=3 用变形补码计算用变形补码计算X+Y。解解 X补补=001111011 X补补=1100001011 1 0 0 0 0 1 0 1+ 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0 1 0(无溢出,结果正确无溢出,结果正确)X+Y补补=1

27、10000010X+Y=1111110B=1262.3 2.3 信信 息息 的的 编编 码码 每位十进制数用每位十进制数用8位二进制编码表示,其中高位二进制编码表示,其中高4位为零。位为零。二进制编码的十进制数二进制编码的十进制数(BCD码码)1. 压缩型压缩型BCD码码每位十进制数用每位十进制数用4位二进制编码表示。位二进制编码表示。2. 非压缩型非压缩型BCD码码表表2.2 8421 BCD2.2 8421 BCD码的部分编码码的部分编码十进制数压缩型BCD码非压缩型BCD码00000 00000000000010000 00010000000120000 0010000000103000

28、0 00110000001140000 01000000010050000 01010000010160000 01100000011070000 01110000011180000 10000000100090000 100100001001100001 000000000001 00000000110001 000100000001 00000001120001 001000000001 0000001036900000011 0110100100000011 00000110 00001001BCD码码例例18 用用BCD码求码求8 + 5 。解解 0 0 0 0 1 0 0 0加加6调

29、整调整0 0 0 0 1 1 0 1+ 0 0 0 0 0 1 0 1 8+5 =13的的BCD码码+ 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 非法非法BCD码码(结果结果9)BCD码运算及其十进制调整码运算及其十进制调整+ 0 0 0 0 1 0 0 0 例例19 用用BCD码求码求19+8 。解解 0 0 0 1 1 0 0 1、产生了产生了“逢逢16”进位进位结果为结果为21的的BCD码码,错误错误.0 0 1 0 0 0 0 1加加6调整调整+ 0 0 0 0 0 1 1 0 0 0 1 0 0 1 1 119+8 =27的的BCD码码例例 20 用用BCD码求

30、码求 57+65。 .解解 0101 0111 .1011 1100+ 0110 0101 + 0110 0110 0000 0001 0010 0010非法非法BCD码码加加66调整调整57+65 =122的的BCD码码例例21 用用BCD码求码求128 解解 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 减减6调整调整0 0 0 0 1 0 1 0非法非法BCD码码、产生了产生了“借借1当当16”的借位的借位128 = 4的的BCD码码 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 因此,两个因此,两个BCD数进行运算时,首先按二进制数进行运算时,首先按

31、二进制数进行运算,然后必须用相应的调整指令进行调整,数进行运算,然后必须用相应的调整指令进行调整,从而得到正确的从而得到正确的BCD码结果。码结果。 如果两个对应位如果两个对应位BCD数相加的结果向高位无数相加的结果向高位无进位,且结果小于或等于进位,且结果小于或等于9,则该位不需要修正;若得,则该位不需要修正;若得到的结果大于到的结果大于9而小于而小于16,则该位需要加,则该位需要加6修正。修正。 如果两个对应位如果两个对应位BCD数相加的结果向高位有数相加的结果向高位有进位进位(结果大于或等于结果大于或等于16),则该位需要进行加,则该位需要进行加6修正。修正。 BCD码运算及其十进制调整

32、码运算及其十进制调整 现代计算机不仅用于处理数值领域的问题,而且现代计算机不仅用于处理数值领域的问题,而且要处理大量的非数值领域的问题。必然需要计算机能要处理大量的非数值领域的问题。必然需要计算机能对数字、字母、文字以及其他一些符号进行识别和处对数字、字母、文字以及其他一些符号进行识别和处理,而计算机只能处理二进制数,因此,通过输入理,而计算机只能处理二进制数,因此,通过输入/输输出设备进行人机交换信息时使用的各种字符也必须按出设备进行人机交换信息时使用的各种字符也必须按某种规则,用二进制数码某种规则,用二进制数码0和和1来编码。目前,国际上来编码。目前,国际上在微机、通信设备和仪器仪表中广泛

33、使用的是在微机、通信设备和仪器仪表中广泛使用的是ASCII码码。 ASCII字符编码字符编码字符:数字、字母以及其他一些符号的总称。字符:数字、字母以及其他一些符号的总称。. b6b5b4B3b2b1b0000000110102011310041015110611170000 0NULDLESP0P、p0001 1SOHDC1!1AQaq0010 2STXDC2”2BRbr0011 3ETXDC3#3CScs0100 4EOTDC4$4DTdt0101 5ENQNAK%5EUeu0110 6ACKSYN&6FVfv0111 7BELETB7GWgw1000 8BSCAN (8HXhx1001

34、9HTEM)9IYiy1010 ALFSUB*:JZjz1011 BVTESC+;Kk1100 CFFFS ,Nn1111 F SI US/?OoDEL表表3 3 美国标准信息交换码美国标准信息交换码ASCII(7位代码位代码) 表中有关功能控制符解释如下表中有关功能控制符解释如下: NUL(Null) 空空SOH(Start Heading)标题开始标题开始STX(Start of Text)文本开始文本开始ETX(End of Text)文本结束文本结束EOT(End of Trasmission)发送结束发送结束ENQ(Enquiry)询问询问BS(Back Space)退格退格LF(L

35、ine Feed) 换行换行CR(Carriage Return)回车回车SP(Space)空格空格. 四、四、数的定点与浮点表示法数的定点与浮点表示法 1 定点表示定点表示 .纯整数形式纯整数形式 .纯小数形式纯小数形式 .符号位符号位 数数 值值 位位.小数点小数点(小数点隐藏,在机中不占位)(小数点隐藏,在机中不占位).小数点小数点符号位符号位 数数 值值 位位小数点在数中的位置固定。小数点在数中的位置固定。 (2n1)x2n 1 (原码表示原码表示) 2nx2n 1 (补码表示补码表示) 设用一个设用一个n+1位字来表示一个数位字来表示一个数x,其中最高位表,其中最高位表示符号位,其他

36、示符号位,其他n位为数值位。对于纯小数表示法,所位为数值位。对于纯小数表示法,所能表示的数能表示的数x 的范围为:的范围为: (12n)x12n (原码表示原码表示) 1x12n (补码表示补码表示) 对于纯整数表示法,所能表示的数对于纯整数表示法,所能表示的数x的范围为:的范围为:二进制数编码二进制数编码对 应 十 进 制 真 值无符号数无符号数原码原码反码反码补码补码0000 00000+0+0+00000 00011+1+1+10000 00102+2+2+20111 1110126+126 +126 +1260111 1111127+127 +127 +1271000 00001280

37、1271281000 000112911261271000 001013021251261111 1101253125231111 1110254126121111 111125512701表表2.1 82.1 8位二进制整数编码的各种表示方法对照位二进制整数编码的各种表示方法对照(IEEE754)浮点数浮点数背景背景在在IEEEIEEE标准标准754754之前,业界并没有一个统一的浮点数标准,相之前,业界并没有一个统一的浮点数标准,相反,很多计算机制造商都设计自己的浮点数规则,以及运算细反,很多计算机制造商都设计自己的浮点数规则,以及运算细节。那时,实现的速度和简易性比数字的精确性更受重视。

38、节。那时,实现的速度和简易性比数字的精确性更受重视。直到直到19851985年年IntelIntel打算为其的打算为其的80868086微处理器引进一种浮点数协处理微处理器引进一种浮点数协处理器的时候,聪明地意识到,作为设计芯片者的电子工程师和固器的时候,聪明地意识到,作为设计芯片者的电子工程师和固体物理学家们,也许并不能通过数值分析来选择最合理的浮点体物理学家们,也许并不能通过数值分析来选择最合理的浮点数二进制格式。数二进制格式。IntelIntel在请加州大学伯克利分校的在请加州大学伯克利分校的 William Kahan William Kahan教授来为教授来为8087 FPU8087

39、 FPU设计浮点数格式设计浮点数格式; ; 而这个家伙又找来两个专家来协助他,于是就而这个家伙又找来两个专家来协助他,于是就有了有了KCSKCS组合(组合(Kahn, Coonan, and StoneKahn, Coonan, and Stone)。)。他们共同完成了他们共同完成了IntelIntel的浮点数格式设计,而且完成地如此出色的浮点数格式设计,而且完成地如此出色,以致于,以致于IEEEIEEE组织决定采用一个非常接近组织决定采用一个非常接近KCSKCS的方案作为的方案作为IEEEIEEE的标准浮点格式。的标准浮点格式。目前,几乎所有计算机都支持该标准,大大改善了科学应用程目前,几乎

40、所有计算机都支持该标准,大大改善了科学应用程序的可移植性。序的可移植性。表示形式表示形式浮点数也是一串浮点数也是一串0和和1构成的位序列构成的位序列(bit sequence)。IEEE标准从逻辑上用三元组标准从逻辑上用三元组S,E,M表示一个数表示一个数N, n,s,e,m分别为N,S,E,M对应的实际数值,而N,S,E,M仅仅是一串二进制位S(sign)表示N的符号位。对应值s满足:n0时,s=0; n0时,s=1。E(exponent)表示N的指数位,位于S和M之间的若干位。对应值e值也可正可负。M(mantissa)表示N的尾数位,恰好,它位于N末尾。M也叫有效数字位(sinifica

41、nd)、系数位(coefficient), 甚至被称作“小数”。浮点数格式浮点数格式IEEE标准标准754规定了三种浮点数格式:规定了三种浮点数格式:l单精度、l双精度、l扩展精度。l前两者正好对应C语言里头的float、double或者FORTRAN里头的real、double精度类型。 单精度:N共32位,其中S占1位,E占8位,M占23位。 双精度:N共64位,其中S占1位,E占11位,M占52位。浮点数格式浮点数格式M虽然是虽然是23位或者位或者52位,但它们只是表示小数点位,但它们只是表示小数点之后的二进制位数,之后的二进制位数,假定假定 M为为“010110011.”, 在二进制数

42、值上其实在二进制数值上其实是是“.010110011.”。标准规定小数点左边还有一个隐含位,这个隐含标准规定小数点左边还有一个隐含位,这个隐含位绝大多数情况下是位绝大多数情况下是1。那什么情况下是那什么情况下是0呢?答案是呢?答案是N对应的对应的n非常小的非常小的时候,比如小于时候,比如小于 2-126(32位单精度浮点数位单精度浮点数)。隐含位算是赚来了一位精度隐含位算是赚来了一位精度,于是于是M对应的对应的m最后最后结果可能是结果可能是m=1.010110011.”或者或者“m=0.010110011.”规格化规格化(normalized)”“非规格化非规格化(denormalized)1

43、 1、规格化:、规格化:当当E E的二进制位不全为的二进制位不全为0,0,也不全为也不全为1 1时,时,N N为为规格化形式。此时规格化形式。此时e e被解释为表示偏置(被解释为表示偏置(biasedbiased)形式的)形式的整数。整数。e e值计算公式:值计算公式:|E|表示E的二进制序列表示的整数值,例如E为10000100,则|E|=132,e=132-127=5 。 k则表示E的位数,对单精度来说,k=8,则bias=127,对双精度来说,k=11,则bias=1023。规格化规格化(normalized)”“非规格化非规格化(denormalized)2.非规格化:非规格化:当当E

44、的二进制位全部为的二进制位全部为0时,时,N为非规格为非规格化形式。此时化形式。此时e,m的计算都非常简单。的计算都非常简单。 此时小数点左侧的隐含位为0。 为什么e会等于(1-bias)而不是(-bias),这主要是为规格化数值、非规格化数值之间的平滑过渡设计的。有了非规格化形式,我们就可以表示0了。把符号位S值1,其余所有位均置0后,我们得到了 -0.0; 同理,把所有位均置0,则得到 +0.0。非规格化数还有其他用途,比如表示非常接近0的小数,而且这些小数均匀地接近0,称为“逐渐下溢(gradually underflow)”属性。规格化规格化(normalized)”“非规格化非规格化

45、(denormalized)3、特殊数值:、特殊数值: l当E的二进制位全为1时为特殊数值。此时,若M的二进制位全为0,则n表示无穷大,若S为1则为负无穷大,若S为0则为正无穷大; l若M的二进制位不全为0时,表示NaN(Not a Number),表示这不是一个合法实数或无穷,或者该数未经初始化。范例范例我们假定N是一个8位浮点数,其中, S占1位, E占4位, M占3位。范例分析范例分析看看 N N 列,二进制位表示是均匀递增的,且增量都是一个最小二进制位。列,二进制位表示是均匀递增的,且增量都是一个最小二进制位。观察最大的非规格数,发现恰好就是观察最大的非规格数,发现恰好就是MM全为全为

46、1, E1, E全为全为0 0的情况。于是我们求出的情况。于是我们求出最大的非规格数为:最大的非规格数为:公式中,公式中,h h为为MM的位数的位数( (如范例中为如范例中为3)3)。注意,公式等号右边的第一项同时又是。注意,公式等号右边的第一项同时又是最小规格数的值(如范例中为最小规格数的值(如范例中为 8/512 8/512 ); ;第二项则正是最小非规格数的值第二项则正是最小非规格数的值( (如如范例中为范例中为1/512)1/512)即该浮点数能表示的最小正数。即该浮点数能表示的最小正数。 看看 m m 列,规格化数都是列,规格化数都是 1+ x 1+ x 的形式,这个的形式,这个1

47、1正是隐含位正是隐含位1; 1; 而非规格化数隐而非规格化数隐含位为含位为0, 0, 所以没有所以没有 1+ 1+ 。看看 n n 列,非规格化数从上到下的增量都是列,非规格化数从上到下的增量都是 1/512, 1/512, 且过渡到规格化数时,增且过渡到规格化数时,增量是平滑的,依旧是量是平滑的,依旧是1/5121/512。这正是非规格化数中这正是非规格化数中e e等于等于(1-bias)(1-bias)而不是而不是(-bias)(-bias)的缘故,也是巧妙设计的结的缘故,也是巧妙设计的结果。果。 再继续往下看,发现增量值逐渐增大。可见,浮点数的取值范围不是均匀的。再继续往下看,发现增量值逐渐增大

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论