第二章 数据的机器级表示_第1页
第二章 数据的机器级表示_第2页
第二章 数据的机器级表示_第3页
第二章 数据的机器级表示_第4页
第二章 数据的机器级表示_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

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

文档简介

1、Ch2: Data Representation数据的机器级表示数据的机器级表示第一讲第一讲 数值数据的表示数值数据的表示第二讲第二讲 非数值数据表示及非数值数据表示及 数据的宽度、存储排列、纠数据的宽度、存储排列、纠/ /检错检错2022-5-10第一讲:数值数据的表示第一讲:数值数据的表示主主 要要 内内 容容u定点数的表示定点数的表示 进位计数制进位计数制 定点数的二进制编码定点数的二进制编码- 原码、补码、移码表示原码、补码、移码表示 定点整数的表示定点整数的表示- 无符号整数、带符号整数无符号整数、带符号整数u浮点数格式和表示范围浮点数格式和表示范围u浮点数的规格化浮点数的规格化uI

2、EEE754浮点数标准浮点数标准 单精度浮点数、双精度浮点数单精度浮点数、双精度浮点数 特殊数的表示形式特殊数的表示形式uC语言程序中的整数类型、浮点数类型语言程序中的整数类型、浮点数类型u十进制数表示十进制数表示2022-5-10信息的二进制编码信息的二进制编码u计算机的外部信息与内部机器级数据计算机的外部信息与内部机器级数据 u机器级数据分两大类:机器级数据分两大类: 数值数据:无符号整数、带符号整数、浮点数(实数)、十进制数数值数据:无符号整数、带符号整数、浮点数(实数)、十进制数 非数值数据:逻辑数(包括位串)、西文字符和汉字非数值数据:逻辑数(包括位串)、西文字符和汉字u计算机内部所

3、有信息都用二进制(即:计算机内部所有信息都用二进制(即:0和和1)进行编码)进行编码u用二进制编码的原因:用二进制编码的原因: 制造二个稳定态的物理器件容易制造二个稳定态的物理器件容易 二进制编码、计数、运算规则简单二进制编码、计数、运算规则简单 正好与逻辑命题对应,便于逻辑运算,并可方便地用逻辑电路实现正好与逻辑命题对应,便于逻辑运算,并可方便地用逻辑电路实现算术运算算术运算u真值和机器数真值和机器数 机器数:用机器数:用0和和1编码的计算机内部的编码的计算机内部的0/1序列序列 真值:机器数真正的值,即:现实中带正负号的数真值:机器数真正的值,即:现实中带正负号的数首先考虑首先考虑数值数据

4、的表示数值数据的表示C语言中哪些类型是数值数据?哪些是非? 无符号整数 有符号整数 高级语言程序员角度 图、树、链表等结构化数据描述 文字、图、表、声音、视频等各种媒体信息 输出设备 用户角度 输入设备 低级语言程序员和系统设计者角度 二进制编码表示的各种数据 指令系统能识别的基本类型数据 数值型数据 非数值型数据 整数(定点数) 实数(浮点数) 二进制数 二进制编码的十进制数 逻辑数据 西文字符和汉字 BACKP.26 图图2.12022-5-10数值数据的表示数值数据的表示u数值数据表示的三要素数值数据表示的三要素 进位计数制进位计数制 定、浮点表示定、浮点表示 如何用二进制编码如何用二进

5、制编码即:要确定一个数值数据的值必须先确定这三个要素。即:要确定一个数值数据的值必须先确定这三个要素。例如,机器数例如,机器数 01011001的值是多少?的值是多少?u进位计数制进位计数制 十进制、二进制、十六进制、八进制数及其相互转换十进制、二进制、十六进制、八进制数及其相互转换u定定/浮点表示浮点表示(解决小数点问题)(解决小数点问题) 定点整数、定点小数定点整数、定点小数 浮点数(可用一个定点小数和一个定点整数来表示)浮点数(可用一个定点小数和一个定点整数来表示)u定点数的编码定点数的编码(解决正负号问题)(解决正负号问题) 原码、补码、反码、移码原码、补码、反码、移码 (反码很少用)

6、(反码很少用)答案是:不知道!答案是:不知道!2022-5-10 Sign and Magnitude (原码的表示)(原码的表示)BinaryDecimal0123456700000001001000110100010101100111u 容易理解容易理解, , 但是:但是: 0 0 的表示不唯一,故不利于程序员编程的表示不唯一,故不利于程序员编程 加、减运算方式不统一加、减运算方式不统一 需额外对符号位进行处理,故不利于硬件设计需额外对符号位进行处理,故不利于硬件设计 特别当特别当 ab ab时,实现时,实现 a-b a-b比较困难比较困难从从 5050年代开始,整数都采用补码来表示年代开

7、始,整数都采用补码来表示但浮点数的尾数用原码定点小数表示但浮点数的尾数用原码定点小数表示BinaryDecimal-0-1-2-3-4-5-6-7100010011010101111001101111011112022-5-10补码特性补码特性 - 模运算(模运算(modular运算)运算)时钟是一种模时钟是一种模12系统系统 假定钟表时针指向假定钟表时针指向10点,要将它拨向点,点,要将它拨向点, 则有两种拨法:则有两种拨法: 倒拨倒拨4格:格:10- 4 = 6 顺拨顺拨8格:格:10+8 = 18 6 (mod 12) 模模12系统中:系统中: 10- 4 10+8 (mod 12) -

8、 4 8 (mod 12) 则,称则,称8是是- 4对模对模12的补码的补码 (即:(即:- 4的模的模12补码等于补码等于8)。)。 同样有同样有 -3 9 (mod 12) -5 7 (mod 12)等等结论结论2 2: 对于某一确定的模,某数减去小于模的另一数,总可对于某一确定的模,某数减去小于模的另一数,总可以用该数加上另一数负数的补码来代替。以用该数加上另一数负数的补码来代替。补码(补码(modular运算):运算):+ 和和 的统一的统一 重要概念:重要概念:在一个模运算系统中,一个数与它除以在一个模运算系统中,一个数与它除以“模模”后的余数等价。后的余数等价。结论结论1 1: 一

9、个负数的补码等于模减该负数的绝对值。一个负数的补码等于模减该负数的绝对值。2022-5-10模运算系统举例模运算系统举例例例1:“钟表钟表”模运算系统模运算系统 假定时针只能顺拨,从假定时针只能顺拨,从10点倒拨点倒拨4格后是几点?格后是几点?10- 4 = 10+(12- 4) = 10+8 = 6 (mod 12)例例2:“4位十进制数位十进制数” 模运算系统模运算系统 假定算盘只有四档,且只能做加法,则在算盘上计算假定算盘只有四档,且只能做加法,则在算盘上计算 9828-1928等于多少?等于多少?9828-1928=9828+(104-1928) =9828+8072 = 1 7900

10、 =7900(mod 104)取模即只留余数,高位取模即只留余数,高位“1”1”被丢弃!被丢弃!相当于只有低相当于只有低4 4位留在算盘上。位留在算盘上。2022-5-10运算器是一个模运算系统,适合用补码表示和运算运算器是一个模运算系统,适合用补码表示和运算0000000110000010010011101111011101011010101111001101001101101001计算机中运算器只有有限位。假定为计算机中运算器只有有限位。假定为n位,则运算结果只能保留低位,则运算结果只能保留低n位,位,故可看成是个只有故可看成是个只有n档的二进制算盘。所以,其模为档的二进制算盘。所以,其模

11、为2n 。当当n=4时,共有时,共有16个机器数:个机器数:0000 1111,可看成是模为,可看成是模为24 的钟表系统。的钟表系统。真值范围为:真值范围为:-8 +7补码的定义补码的定义 假定补码有假定补码有n位,则:位,则:定点整数:定点整数:X补补= 2n + X (-2nX 2n ,mod 2n)定点小数:定点小数:X补补= 2 + X (-1X1,mod 2)2022-5-10求特殊数的补码求特殊数的补码 -1补补= 2n - 001 = 111(n个个1) (mod 2n)假定机器数有假定机器数有n位位 -2n-1补补= 2n - 2n-1 = 100(n-1个个0) (mod

12、2n) -1.0补补= 2 - 1.0 = 1.000(n-1个个0) (mod 2) +0补补= -0补补= 000(n个个0) 2022-5-10补码与真值之间的简便转换补码与真值之间的简便转换例例: 设机器数有设机器数有8位,求位,求123和和-123的补码表示。的补码表示。解解: 123 = 127- 4 = 01111111B - 100B = 01111011B -123= - 01111011B 01111011补补= 28 + 01111011 = 100000000 + 01111011 = 01111011 (mod 28),即,即 7BH。 - 01111011补补= 2

13、8 01111011 = 10000 0000 - 01111011 = 1111 1111 0111 1011 +1 = 1000 0100 +1 = 1000 0101,即,即 85H。如何快速得到如何快速得到123的二进制表示?的二进制表示?各位取反,末位加各位取反,末位加12022-5-10 Twos Complement (补码的表示)(补码的表示)u正数:符号位(正数:符号位(sign bit)为)为0,数值部分不变,数值部分不变u负数:符号位为负数:符号位为1,数值部分,数值部分“各位取反,末位加各位取反,末位加1”+0和和-0表示唯一表示唯一变形(模变形(模4 4)补码:双符号

14、,用于存放可溢出的中间结果。)补码:双符号,用于存放可溢出的中间结果。值太大,用值太大,用4 4位补码无法表示,故位补码无法表示,故“溢溢出出”!但用变形补码可保留符号位和最!但用变形补码可保留符号位和最高数值位。高数值位。BitwiseInverse111111101101110010111010100110000111Decimal012345678补码补码000000010010001101000101011001111000Decimal-0-1-2-3-4-5-6-7-8 补码补码000011111110110111001011101010011000变形补码变形补码00000000

15、0100010000110010000101001100011101000变形补码变形补码0000011111111101110111100110111101011001110002022-5-10如何求补码的真值如何求补码的真值根据补码各位上的根据补码各位上的“权权”,可以求出一个补码的值,可以求出一个补码的值真值范围:真值范围: 令:令:A补补= an-1an-2 a1a0 则:则: A= -an-1.2n-1+an-2 .2n-2+ a1 .21+ a0 .20 符号为符号为0 0,则为正数,数值部分同,则为正数,数值部分同符号为符号为1 1,则为负数,数值各位取反,末位加,则为负数,数

16、值各位取反,末位加1 1例如:补码例如:补码“11010110”的真值为:的真值为:-0101010=-(32+8+2)=-422022-5-10Excess (biased) notion- 移码表示移码表示什么是什么是“excess (biased) notation-移码表示移码表示”? 将每一个数值加上一个偏置常数(将每一个数值加上一个偏置常数( Excess / bias)一般来说,当编码位数为一般来说,当编码位数为n时,时,bias取取 2n-1 Ex. n=4: Ebiased = E+ 23 ( bias= 23 =10002 ) -8 (+8) 00002 -7 (+8) 0

17、0012 0 (+8) 10002 +7 (+8) 11112为什么要用移码来表示指数(阶码)为什么要用移码来表示指数(阶码)? 便于浮点数加减运算时的对阶操作便于浮点数加减运算时的对阶操作例:例:1.01 x2-1+1.11 x23 简化比较简化比较补码:补码:1111 0011 ? (-1) (3)1.01 x2-1+4+1.11 x23+4 移码:移码:0011 0111 (3) (7)移码主要用来表示移码主要用来表示浮点数阶码!浮点数阶码!0 0的移码表示唯一的移码表示唯一移码和补码仅第一位不同移码和补码仅第一位不同2022-5-10 Unsigned integer(无符号整数无符号

18、整数)u机器中字的位排列顺序有两种方式:(例:机器中字的位排列顺序有两种方式:(例:32位字位字: 0010112) 高到低位从左到右:高到低位从左到右:0000 0000 0000 0000 0000 0000 0000 1011 高到低位从右到左:高到低位从右到左:1101 0000 0000 0000 0000 0000 0000 0000 MIPS采用高到低从左往右排列采用高到低从左往右排列 Leftmost和和rightmost这两个词有歧义,故用这两个词有歧义,故用LSB(Least Significant Bit)来表示最低有效位,用来表示最低有效位,用MSB来表示最高有效位来表

19、示最高有效位u一般在全部是正数运算且不出现负值结果的场合下,可使用无符号数表一般在全部是正数运算且不出现负值结果的场合下,可使用无符号数表示。例如,地址运算,编号表示,等等示。例如,地址运算,编号表示,等等u无符号数的编码中没有符号位无符号数的编码中没有符号位u能表示的最大值大于位数相同的带符号整数的最大值(能表示的最大值大于位数相同的带符号整数的最大值(Why?)?) 例如,例如,8位无符号整数最大是位无符号整数最大是255(1111 1111) 而而8位带符号整数最大为位带符号整数最大为127(0111 1111)u总是整数,所以很多时候就简称为总是整数,所以很多时候就简称为“无符号数无符

20、号数”MSB LSB2022-5-10Signed integer(带符号整数,定点整数)(带符号整数,定点整数)u计算机必须能处理正数计算机必须能处理正数(positive) 和负数和负数(negative),MSB表示数符表示数符u有三种定点编码方式有三种定点编码方式 Signed magnitude (原码)原码) 现用来表示浮点(实)数的尾数现用来表示浮点(实)数的尾数 Ones complement (反码)反码) 现已不用现已不用 Twos complement (补码)补码) 50年代以来,所有计算机都用补码来表示定点整数年代以来,所有计算机都用补码来表示定点整数u为什么用补码表

21、示带符号整数?为什么用补码表示带符号整数? 补码运算系统是模运算系统,加、减运算统一补码运算系统是模运算系统,加、减运算统一 数数0的表示唯一,方便使用的表示唯一,方便使用 比原码和反码多表示一个最小负数比原码和反码多表示一个最小负数 与移码相比,其符号位和真值的符号对应关系清楚与移码相比,其符号位和真值的符号对应关系清楚2022-5-10带符号数和无符号数的比较带符号数和无符号数的比较u扩充操作扩充操作有差别有差别 例如,例如,MIPS提供了两种加载指令(提供了两种加载指令(load byte unsigned / load byte)-无符号数:无符号数:lbu $t0, 0($s0) ;

22、 $t0高高24位补位补0 (称为(称为0扩展)扩展)-带符号整数:带符号整数: lb $t0, 0($s0) ; $t0高高24位补符位补符 (称为符号扩展)(称为符号扩展)u数的比较有差异数的比较有差异 无符号数:无符号数:MSB为为1的数比的数比MSB为为0的数大的数大 带符号整数:带符号整数: MSB为为1的数比的数比MSB为为0的数小的数小 例如,例如,MIPS中提供了不同的比较指令,如:中提供了不同的比较指令,如:-无符号数:无符号数:sltu $t0, $s0, $s1 (set less than unsigned)-带符号整数:带符号整数: slt $t1, $s0, $s1

23、 (set less than) 假定:假定: $s0=1111 1111 1111 1111 1111 1111 1111 1111 $s1=0000 0000 0000 0000 0000 0000 0000 0001 则:则:$t0和和$t1分别为多少?分别为多少? 答案:答案:$t0和和$t1分别为分别为0和和1。u溢出判断有差异(无符号数根据最高位是否有进位判断溢出,通常不判)溢出判断有差异(无符号数根据最高位是否有进位判断溢出,通常不判) MIPS规定:无符号数运算溢出时,不产生规定:无符号数运算溢出时,不产生“溢出异常溢出异常”SKIP2022-5-10扩展操作举例扩展操作举例例

24、例1(扩展操作):在(扩展操作):在32位大端机上输出位大端机上输出si, usi, i, ui的十进制和十六进制值是什么?的十进制和十六进制值是什么?short si = -32768;unsigned short usi = si;int i = si;unsingned ui = usi ;si = -32768 80 00usi = 32768 80 00i = -32768 FF FF 80 00 ui = 32768 00 00 80 00BACK2022-5-10C语言程序中的整数语言程序中的整数关系表达式运算类型结果说明0 = 0U-1 0-1 -2147483647-1214

25、7483647U -2147483647-12147483647 (int) 2147483648U-1 -2(unsigned) -1 -2无符号数:无符号数:unsigned int ( short / long);带符号整数:;带符号整数: int ( short / long)常在一个数的后面加一个常在一个数的后面加一个“u u”或或“U U”表示无符号数表示无符号数若同时有无符号和带符号整数,则若同时有无符号和带符号整数,则C编译器将带符号整数强制转换为无符号数编译器将带符号整数强制转换为无符号数假定以下关系表达式在假定以下关系表达式在3232位用补码表示的机器上执行,结果是什么?位

26、用补码表示的机器上执行,结果是什么?2022-5-10C语言程序中的整数语言程序中的整数关系关系表达式表达式类类型型结结果果说明说明0 = = 0U-1 0-1 -2147483647 - 12147483647U -2147483647 - 12147483647 (int) 2147483648U-1 -2(unsigned) -1 -2无无带带无无带带无无带带带带无无11 0*1 0* 1*11000B = 000B111B (-1) 000B(0)0111B (231-1) 1000B (-231)0111B (231-1) 1000B (-231)111B (-1) 1110B (-

27、2)111B (232-1) 1110B (232-2)带带* *的结果与常规预想的相反!的结果与常规预想的相反!2022-5-10Example:mantissa (尾数尾数) exponent(阶码、指数阶码、指数) 6.02 x 10 21 decimal point radix (base,基,基) Normalized form(规格化形式)(规格化形式): 小数点前只有一位非小数点前只有一位非0数数 同一个数有多种表示形式。例:对于数同一个数有多种表示形式。例:对于数 1/1,000,000,000 Normalized (唯一的规格化形式唯一的规格化形式): 1.0 x 10-9

28、 Unnormalized(非规格化形式不唯一)(非规格化形式不唯一): 0.1 x 10-8, 10.0 x 10-10科学计数法(Scientific Notation)与浮点数 mantissa(尾数)(尾数) exponent(指数)(指数) 1.011two x 2 -10 binary point 基为基为2for Binary Numbers:只要对尾数和指数分别编码,就可表示一个浮点数(即:实数)只要对尾数和指数分别编码,就可表示一个浮点数(即:实数)2022-5-10浮点数浮点数(Floating Point)的表示范围的表示范围例:画出下述例:画出下述32位浮点数格式的表数

29、范围。位浮点数格式的表数范围。 0 1 8 9 31 第第0 0位数符位数符S S;第;第1 18 8位为位为8 8位移码表示阶码位移码表示阶码E E(偏置常数为(偏置常数为128128);第);第9 93131位为位为2424位二进制原码小数表示的尾数位二进制原码小数表示的尾数M M。规格化尾数的小数点后第一位。规格化尾数的小数点后第一位总是总是1 1,故规定第一位默认的,故规定第一位默认的“1 1”不明显表示出来。这样可用不明显表示出来。这样可用2323个数位表个数位表示示2424位尾数。位尾数。S阶码阶码E尾数尾数M最大正数:最大正数:0.111 x 2111 =(1-2-24) x 2

30、127 最小正数:最小正数:0.100 x 2000 =(1/2) x 2-128 因为原码是对称的,所以其表示范围是关于原点对称的。因为原码是对称的,所以其表示范围是关于原点对称的。机器机器0 0:尾数为:尾数为0 0 或或 落在下溢区中的数落在下溢区中的数浮点数范围比定点数大,但数的个数没变多,故数之间更稀疏,且不均匀浮点数范围比定点数大,但数的个数没变多,故数之间更稀疏,且不均匀 正下溢 负下溢 - (1-2-24) 2127 数轴 零 可表示的正数 可表示的负数 -2-129129 0 2-129129 (1-2-24) 2127 正上溢 负上溢 2022-5-10浮点数的表示浮点数的

31、表示Normal format(规格化数形式)(规格化数形式) : +/-1.xxxxxxxxxxtwo x 2Exponent32-bit 规格化数:规格化数: 31 0 S Exponent Significand 1 bit ? bits ? bits S 是符号位(是符号位(Sign) Exponent用用 excess (or biased) notation(移码移码/增码增码)来表示来表示 Significand 表示表示 xxxxxxxxxxxxx,尾数部分,尾数部分 (基可以是基可以是 2/ 4 / 8 / 16,约定信息,无需显式表示,约定信息,无需显式表示 )早期的计算机

32、,各自定义自己的浮点数格式早期的计算机,各自定义自己的浮点数格式问题:浮点数表示不统一会带来什么问题?问题:浮点数表示不统一会带来什么问题?小数点前面总是“1”,故可隐含表示2022-5-10“Father” of the IEEE 754 standard现在所有计算机都采用现在所有计算机都采用IEEE754IEEE754来表示浮点数来表示浮点数19701970年代后期年代后期, IEEE, IEEE成立委员会着手制定浮点数标准成立委员会着手制定浮点数标准19851985年完成浮点数标准年完成浮点数标准IEEE754IEEE754的制定的制定Prof. William Kahan www.c

33、/wkahan/ieee754status/754story.htmlThis standard was primarily the work of one person, UC Berkeley math professor William Kahan. 直到直到8080年代初,各个机器内部的浮点数表示格式还没有统一年代初,各个机器内部的浮点数表示格式还没有统一 因而相互不兼容,机器之间传送数据时,带来麻烦因而相互不兼容,机器之间传送数据时,带来麻烦 2022-5-10IEEE 754 Floating Point Standard Single Precisio

34、n : ( Double Precision is similar ) S Exponent Significand 1 bit 8 bits 23 bits Sign bit: 1 表示表示negative ; 0表示表示 positiveSignificand(尾数)(尾数): 规格化尾数最高位总是规格化尾数最高位总是1,所以隐含表示,省,所以隐含表示,省1位位 1 + 23 bits ( single),),1 + 52 bits (double)Exponent(阶码(阶码 / 指数)指数): SP规格化数阶码范围为规格化数阶码范围为0000 0001 (-126) 1111 1110

35、 (127)bias为为127 (single), 1023 (double)SP: (-1)S x (1 + Significand) x 2(Exponent-127)DP: (-1)S x (1 + Significand) x 2(Exponent-1023)全全0 0和全和全1 1用来表示特殊值!用来表示特殊值!为什么用为什么用127127?若用?若用128,128,则阶码范围为多少?则阶码范围为多少?0000 0001 (-127) 1111 1110 (126)2022-5-10Ex: Converting Binary FP to Decimal10111 1101 110 0

36、000 0000 0000 0000 0000Sign: 1 = negativeExponent: 0111 1101two = 125ten Bias adjustment: 125 - 127 = -2Significand: 1 + 1x2-1+ 1x2-2 + 0 x2-3 + 0 x2-4 + 0 x2-5 +. =1+2-1 +2-2 = 1+0.5 +0.25 = 1.75Represents: -1.75tenx2-2 = - 0.4375(-1)S x (1 + Significand) x 2(Exponent-127)BEE00000H is the hex. Rep.

37、 Of an IEEE 754 SP FP number2022-5-10Ex: Converting Decimal to FP-12.75 1. Denormalize: -12.752. Convert integer part: 12 = 8 + 4 = 110023. Convert fractional part: .75 = .5 + .25 = .1124. Put parts together and normalize: 1100.11 = 1.10011 x 235. Convert exponent: 127 + 3 = 128 + 2 = 1000 001021100

38、0 0010 100 1100 0000 0000 0000 0000The Hex rep. is C14C0000H2022-5-10Normalized numbers(规格化数)(规格化数)Exponent Significand Object1-254 anything Norms implicit leading 10 0 ?0 nonzero ? 255 0 ?255 nonzero ?前面的定义都是针对规格化数(前面的定义都是针对规格化数(normalized form)How about other patterns?2022-5-10Representation for 0

39、How to represent 0? exponent: all zeros significand: all zeros What about sign? Both cases valid. +0: 0 00000000 00000000000000000000000 -0: 1 00000000 000000000000000000000002022-5-10Representation for +/- How to represent +/-? Exponent : all ones (11111111B = 255) Significand: all zeros + : 0 1111

40、1111 00000000000000000000000 - : 1 11111111 00000000000000000000000Operations 5 / 0 = +, -5 / 0 = - 5+(+) = +, (+)+(+) = + 5 - (+) = -, (-) - (+) = - etc为什么要这样处理为什么要这样处理? 可以利用可以利用+/-作比较。作比较。 例如:例如:X/0Y可作为有效比较可作为有效比较In FP, 除数为除数为0的结果是的结果是 +/- , 不是溢出异常不是溢出异常. :infinity2022-5-10Representation for “Not

41、a Number”Sqrt (- 4.0) = ? 0/0 = ? Called Not a Number (NaN) - “非数非数”Operations sqrt (-4.0) = NaN 0/0 = NaN op (NaN,x) = NaN +(-) = NaN +- (+) = NaN / = NaN etc. How to represent NaN Exponent = 255 Significand: nonzero NaNs can help with debugging2022-5-10What have we defined so far? (for SP)Represen

42、tation for Denorms(非规格化数非规格化数) Used to represent Denormalized numbers Exponent Significand Object0 0 +/-00 nonzero Denorms 1-254 anything Norms implicit leading 1255 0 +/- infinity255 nonzero NaN2022-5-10Representation for Denorms2-1262-1252-1242-1231.00 x2-126 1.11x2-1260.00 x2-126 0.11x2-1262-1262

43、-1252-1242-12300GAP Normalized numbersDenorms(-1)s0.aaa 2-1262022-5-10Questions about IEEE 754uWhats the range of representable values?The largest number for single: +1.111X 2127 How about double?uWhat about following type converting: not always true! if ( i = (int) (float) i) ) printf (“true”); if

44、( f = (float) (int) f) ) printf (“true”); uHow about FP add associative? FALSE! x = 1.5 x 1038, y = 1.5 x 1038, z = 1.0 (x+y)+z = (1.5x1038+1.5x1038 ) +1.0 = 1.0 x+(y+z) = 1.5x1038+ (1.5x1038+1.0) = 0.0How about double? How about double?True!Not always true!约约 +3.4 X 1038约约 +1.8 X 103082022-5-10u数值数

45、据(数值数据(numerical data)的两种表示)的两种表示Binary (二进制数二进制数)o 定点整数:定点整数:Fixed-point number (integer)o Unsigned and signed into 浮点数:浮点数:Floating-point number (real number)Decimal (十进制数十进制数)o 用用ASCII码表示码表示o 用用BCD(Binary coded Decimal)码表示)码表示u计算机中为什么要用十进制数表示数值?计算机中为什么要用十进制数表示数值? 日常使用的都是十进制数,所以,计算机外部都使用十进制数。在一日常使

46、用的都是十进制数,所以,计算机外部都使用十进制数。在一些有大量数据输入些有大量数据输入/出的系统中,为减少二进制数和十进制数之间的转出的系统中,为减少二进制数和十进制数之间的转换,在计算机内部直接用十进制数表示数值。换,在计算机内部直接用十进制数表示数值。 十进制数的表示十进制数的表示2022-5-10用用ASCII码表示十进制数码表示十进制数u前分隔数字串前分隔数字串 符号位单独用一个字节表示,位于数字串之前。符号位单独用一个字节表示,位于数字串之前。 正号用正号用“+”的的ASCII码码(2BH)表示;负号用表示;负号用“-”的的ASCII码码(2DH)表示表示 例:十进制数例:十进制数+

47、236表示为表示为: 2B 32 33 36H 0010 1011 0011 0010 0011 0011 0011 0110B 十进制数十进制数-2369表示为表示为: 2D 32 33 36 39H 0010 1101 0011 0010 0011 0011 0011 0110 0011 1001Bu后嵌入数字串后嵌入数字串 符号位嵌入最低位数字的符号位嵌入最低位数字的ASCII码高码高4位中。比前分隔方式位中。比前分隔方式省一个字节。省一个字节。 正数不变;负数高正数不变;负数高4位变为位变为0111. 例:十进制数例:十进制数+236表示为表示为: 32 33 36H 0011 001

48、0 0011 0011 0011 0110B 十进制数十进制数-2369表示为表示为: 32 33 36 79H 0011 0010 0011 0011 0011 0110 0111 1001B缺点:占空间大,且需转换成二进制数或缺点:占空间大,且需转换成二进制数或BCD码才能计算。码才能计算。2022-5-10u编码思想编码思想: 每个十进数位至少有每个十进数位至少有4位二进制表示。而位二进制表示。而4位二进制位可组合成位二进制位可组合成16种状态,去掉种状态,去掉10种状态后还有种状态后还有6种冗余状态。种冗余状态。u编码方案编码方案1 十进制有权码十进制有权码- 每个十进制数位的每个十进

49、制数位的4个二进制位(称为基个二进制位(称为基2码)都有一个确定的权。码)都有一个确定的权。8421码是最常用的十进制有权码。也称自然码是最常用的十进制有权码。也称自然BCD(NBCD)码。)码。2 十进制无权码十进制无权码- 每个十进制数位的每个十进制数位的4个基个基2码没有确定的权。在无权码方案中,用的码没有确定的权。在无权码方案中,用的较多的是余较多的是余3码和格雷码。码和格雷码。3其他编码方案其他编码方案 (5中取中取2码、独热码等)码、独热码等)u符号位的表示:符号位的表示: “+”:1100 ; “-”:1101 例:例:+236=(1100 0010 0011 0110)8421

50、 (占占2个字节个字节) - 2369=(1101 0000 0010 0011 0110 1001)8421 (占占3个字节个字节)用用BCD码表示十进制数码表示十进制数补补0 0以使数占满一个字节以使数占满一个字节2022-5-10第一讲小结第一讲小结u在机器内部编码后的数称为机器数,其值称为真值在机器内部编码后的数称为机器数,其值称为真值u定义数值数据有三个要素:进制、定点定义数值数据有三个要素:进制、定点/浮点、编码浮点、编码u整数的表示整数的表示无符号数:正整数,用来表示地址等;带符号整数:用补码表示无符号数:正整数,用来表示地址等;带符号整数:用补码表示uC语言中的整数语言中的整数

51、无符号数:无符号数:unsigned int ( short / long);带符号数:;带符号数: int ( short / long)u浮点数的表示浮点数的表示符号符号;尾数尾数:定点小数;:定点小数;指数(阶):指数(阶):定点整数(基不用表示)定点整数(基不用表示)u浮点数的范围浮点数的范围正上溢、正下溢、负上溢、负下溢;与阶码的位数和基的大小有关正上溢、正下溢、负上溢、负下溢;与阶码的位数和基的大小有关u浮点数的精度:浮点数的精度:与尾数的位数和是否规格化有关与尾数的位数和是否规格化有关u浮点数的表示(浮点数的表示(IEEE754标准):标准):单精度单精度SP(float)和双精

52、度)和双精度DP(double)- 规格化数规格化数(SP):阶码:阶码1254,尾数最高位隐含为,尾数最高位隐含为1- “零零” (阶为全阶为全0,尾为全,尾为全0)- (阶为全阶为全1,尾为全,尾为全0)- NaN (阶为全阶为全1,尾为非,尾为非0)- 非规非规格化格化数数 (阶为全阶为全0,尾为非,尾为非0,没有隐藏位,没有隐藏位)(P.42倒数第倒数第9行说明)行说明)u十进制数的表示:十进制数的表示:用用ASCII码或码或BCD码表示码表示1010在计算机中在计算机中有几种可能的有几种可能的表示?表示? -10呢?呢?2022-5-10“转换转换”的概念在数据表示中的反映的概念在数

53、据表示中的反映感觉媒体信息感觉媒体信息数组、链表等结构化数据描述数组、链表等结构化数据描述程序中定义的程序中定义的int、float等数据等数据指令中的寄存器或内存中数据指令中的寄存器或内存中数据ALU或总线上的运算或总线上的运算/传输数据传输数据逻辑门逻辑门位信息位信息问题(应用)问题(应用) 算法算法程序(语言)程序(语言)指令集体系结构(指令集体系结构(ISA)微结构微结构电路电路器件(晶体管)器件(晶体管)具具体体实实现现抽抽象象概概括括2022-5-10第二讲第二讲 非数值数据、数据排列、纠非数值数据、数据排列、纠/检错检错主主 要要 内内 容容u非数值数据的表示非数值数据的表示逻辑

54、数据、西文字符、汉字逻辑数据、西文字符、汉字u数据的宽度数据的宽度u数据的存储排列数据的存储排列大端方式、小端方式大端方式、小端方式u数据的纠错和检错数据的纠错和检错奇偶校验、海明校验、循环冗余校验奇偶校验、海明校验、循环冗余校验2022-5-10u表示表示用一位表示用一位表示 。例如,真:。例如,真:1 / 假:假:0N位二进制数可表示位二进制数可表示N个逻辑数据,或一个位串个逻辑数据,或一个位串u运算运算 按位进行按位进行 如如:按位与按位与 / 按位或按位或 / 逻辑左移逻辑左移 / 逻辑右移逻辑右移 等等 u识别识别 逻辑数据和数值数据在形式上并无差别,也是一串逻辑数据和数值数据在形式

55、上并无差别,也是一串0/1序序列,机器靠指令来识别。列,机器靠指令来识别。u位串位串 用来表示若干个状态位或控制位(用来表示若干个状态位或控制位(OS中使用较多)中使用较多) 例如,例如,x86的标志寄存器含义如下:的标志寄存器含义如下: 逻辑数据的编码表示逻辑数据的编码表示CFPFAFZFSFTFIFDFOF2022-5-10u特点特点 是一种拼音文字,用有限几个字母可拼写出所有单词是一种拼音文字,用有限几个字母可拼写出所有单词 只对有限个字母和数学符号、标点符号等辅助字符编码只对有限个字母和数学符号、标点符号等辅助字符编码 所有字符总数不超过所有字符总数不超过256个,使用个,使用7或或8

56、个二进位可表示个二进位可表示u表示(表示(常用编码为常用编码为7位位ASCII码)码) 十进制数字:十进制数字:0/1/2/9 英文字母:英文字母:A/B/Z/a/b/z 专用符号:专用符号:+/-/%/*/&/ 控制字符(不可打印或显示)控制字符(不可打印或显示)u操作操作 字符串操作,如字符串操作,如:传送传送/比较等比较等 西文字符的编码表示西文字符的编码表示必须熟悉对应必须熟悉对应的的ASCII码!码!2022-5-10u特点特点 汉字是表意文字,一个字就是一个方块图形。汉字是表意文字,一个字就是一个方块图形。 汉字数量巨大,总数超过汉字数量巨大,总数超过6万字,给汉字在计算机

57、内部的表示、汉万字,给汉字在计算机内部的表示、汉字的传输与交换、汉字的输入和输出等带来了一系列问题。字的传输与交换、汉字的输入和输出等带来了一系列问题。u编码形式编码形式 有以下几种汉字代码:有以下几种汉字代码: 输入码:输入码:对汉字用相应按键进行编码表示,用于输入对汉字用相应按键进行编码表示,用于输入 内码:内码:用于在系统中进行存储、查找、传送等处理用于在系统中进行存储、查找、传送等处理 字模点阵或轮廓描述字模点阵或轮廓描述: 描述汉字字模点阵或轮廓,用于显示描述汉字字模点阵或轮廓,用于显示/打印打印 汉字及国际字符的编码表示汉字及国际字符的编码表示问题:西文字符有没有输入码?有没有内码

58、?问题:西文字符有没有输入码?有没有内码?有没有字模点阵或轮廓描述?有没有字模点阵或轮廓描述?2022-5-10向计算机输入汉字的方式:向计算机输入汉字的方式: 手写汉字联机识别输入,或者是印刷汉字扫描输入后自动识别,手写汉字联机识别输入,或者是印刷汉字扫描输入后自动识别,这两这两种方法现均已达到实用水平。种方法现均已达到实用水平。 用语音输入汉字用语音输入汉字,虽然简单易操作,但离实用阶段还相差很远。,虽然简单易操作,但离实用阶段还相差很远。 利用英文键盘输入汉字利用英文键盘输入汉字:每个汉字用一个或几个键表示,这种对每个汉字用一个或几个键表示,这种对每个汉字用相应按键进行的编码称为汉字每个

59、汉字用相应按键进行的编码称为汉字“输入码输入码”,又称外码。,又称外码。输入码的码元为按键。是最简便、最广泛的汉字输入方法。输入码的码元为按键。是最简便、最广泛的汉字输入方法。 常用的方法有:搜狗拼音、五笔字型、智能常用的方法有:搜狗拼音、五笔字型、智能ABC、微软拼音等微软拼音等使用汉字输入码的原因:使用汉字输入码的原因: 键盘面向西文设计键盘面向西文设计,一个或两个西文字符对应一个按键,非常方便。,一个或两个西文字符对应一个按键,非常方便。 汉字是大字符集,汉字是大字符集,专门的汉字输入键盘由于键多、查找不便、成本高专门的汉字输入键盘由于键多、查找不便、成本高等原因而几乎无法采用。等原因而

60、几乎无法采用。汉字的输入码汉字的输入码2022-5-10问题:西文字符常用的内码是什么?问题:西文字符常用的内码是什么?对于汉字内码的选择,必须考虑以下几个因素:对于汉字内码的选择,必须考虑以下几个因素: 不能有二义性,即不能和不能有二义性,即不能和ASCII码有相同的编码。码有相同的编码。 尽量与汉字在字库中的位置有关,便于汉字查找和处理。尽量与汉字在字库中的位置有关,便于汉字查找和处理。 编码应尽量短。编码应尽量短。国标码(国标交换码)国标码(国标交换码) 1981年我国颁布了信息交换用汉字编码字符集年我国颁布了信息交换用汉字编码字符集基本集基本集(GB231280)。该标准选出该标准选出6763

温馨提示

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

评论

0/150

提交评论