版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Ch2: Data Representation数据的机器级表示数据的机器级表示第一讲第一讲 数值数据的表示数值数据的表示第二讲第二讲 非数值数据表示及非数值数据表示及 数据的宽度、存储排列、纠数据的宽度、存储排列、纠/检错检错2022-5-2第一讲:数值数据的表示第一讲:数值数据的表示主主 要要 内内 容容u定点数的表示定点数的表示 进位计数制进位计数制 定点数的二进制编码定点数的二进制编码- 原码、补码、移码表示原码、补码、移码表示 定点整数的表示定点整数的表示- 无符号整数、带符号整数无符号整数、带符号整数u浮点数格式和表示范围浮点数格式和表示范围u浮点数的规格化浮点数的规格化uIEEE
2、754浮点数标准浮点数标准 单精度浮点数、双精度浮点数单精度浮点数、双精度浮点数 特殊数的表示形式特殊数的表示形式uC语言程序中的整数类型、浮点数类型语言程序中的整数类型、浮点数类型u十进制数表示十进制数表示2022-5-2信息的二进制编码信息的二进制编码u计算机的外部信息与内部机器级数据计算机的外部信息与内部机器级数据 u机器级数据分两大类:机器级数据分两大类: 数值数据:无符号整数、带符号整数、浮点数(实数)、十进制数数值数据:无符号整数、带符号整数、浮点数(实数)、十进制数 非数值数据:逻辑数(包括位串)、西文字符和汉字非数值数据:逻辑数(包括位串)、西文字符和汉字u计算机内部所有信息都
3、用二进制(即:计算机内部所有信息都用二进制(即:0和和1)进行编码)进行编码u用二进制编码的原因:用二进制编码的原因: 制造二个稳定态的物理器件容易制造二个稳定态的物理器件容易 二进制编码、计数、运算规则简单二进制编码、计数、运算规则简单 正好与逻辑命题对应,便于逻辑运算,并可方便地用逻辑电路实现正好与逻辑命题对应,便于逻辑运算,并可方便地用逻辑电路实现算术运算算术运算u真值和机器数真值和机器数 机器数:用机器数:用0和和1编码的计算机内部的编码的计算机内部的0/1序列序列 真值:机器数真正的值,即:现实中带正负号的数真值:机器数真正的值,即:现实中带正负号的数首先考虑数值数据的表示首先考虑数
4、值数据的表示C语言中哪些类型是数语言中哪些类型是数值数据?哪些是非值数据?哪些是非? 无符号整数 有符号整数 高级语言程序员角度 图、树、链表等结构化数据描述 文字、图、表、声音、视频等各种媒体信息 输出设备 用户角度 输入设备 低级语言程序员和系统设计者角度 二进制编码表示的各种数据 指令系统能识别的基本类型数据 数值型数据 非数值型数据 整数(定点数) 实数(浮点数) 二进制数 二进制编码的十进制数 逻辑数据 西文字符和汉字 BACKP.26 图图2.12022-5-2数值数据的表示数值数据的表示u数值数据表示的三要素数值数据表示的三要素 进位计数制进位计数制 定、浮点表示定、浮点表示 如
5、何用二进制编码如何用二进制编码即:要确定一个数值数据的值必须先确定这三个要素。即:要确定一个数值数据的值必须先确定这三个要素。例如,机器数例如,机器数 01011001的值是多少?的值是多少?u进位计数制进位计数制 十进制、二进制、十六进制、八进制数及其相互转换十进制、二进制、十六进制、八进制数及其相互转换u定定/浮点表示浮点表示(解决小数点问题)(解决小数点问题) 定点整数、定点小数定点整数、定点小数 浮点数(可用一个定点小数和一个定点整数来表示)浮点数(可用一个定点小数和一个定点整数来表示)u定点数的编码定点数的编码(解决正负号问题)(解决正负号问题) 原码、补码、反码、移码原码、补码、反
6、码、移码 (反码很少用)(反码很少用)答案是:不知道!答案是:不知道!2022-5-2 Sign and Magnitude (原码的表示)(原码的表示)BinaryDecimal0123456700000001001000110100010101100111u 容易理解容易理解, 但是:但是: 0 的表示不唯一,不利于程序员编程的表示不唯一,不利于程序员编程 加、减运算方式不统一加、减运算方式不统一 需额外对符号位进行处理,不利于硬件设计需额外对符号位进行处理,不利于硬件设计 特别当特别当 ab时,实现时,实现 a- b比较困难比较困难从从 50年代开始,整数都采用补码来表示年代开始,整数都
7、采用补码来表示但浮点数的尾数用原码定点小数表示但浮点数的尾数用原码定点小数表示BinaryDecimal-0-1-2-3-4-5-6-7100010011010101111001101111011112022-5-2补码特性补码特性 - 模运算(模运算(modular运算)运算)时钟是一种模时钟是一种模-12系统系统 假定钟表时针指向假定钟表时针指向10点,要将它拨向点,点,要将它拨向点, 则有两种拨法:则有两种拨法: 倒拨倒拨4格:格:10- 4 = 6 顺拨顺拨8格:格:10+8 = 18 6 (mod 12) 模模12系统中:系统中: 10- 4 10+8 (mod 12) - 4 8
8、(mod 12) 则,称则,称8是是- 4对模对模12的补码。的补码。 同样有同样有 -3 9 (mod 12) -5 7 (mod 12)等等结论结论2: 对于某一确定的模,某数减去小于模的另一数,总可以用该对于某一确定的模,某数减去小于模的另一数,总可以用该数加上另一数负数的补码来代替。数加上另一数负数的补码来代替。补码(补码(modular运算):运算):+ and 的统一的统一 重要概念:重要概念:在一个模运算系统中,一个数与它除以在一个模运算系统中,一个数与它除以“模模”后的余数等价后的余数等价。结论结论1: 一个负数的补码等于模减该负数的绝对值。一个负数的补码等于模减该负数的绝对值
9、。2022-5-2模运算系统举例模运算系统举例例例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 =7900(mod 104)取模的含义就是只留余数,高位的取模的含义就是
10、只留余数,高位的“1”被被丢弃!相当于只有低丢弃!相当于只有低4位留在算盘上。位留在算盘上。2022-5-2运算器是一个模运算系统,适合用补码表示和运算运算器是一个模运算系统,适合用补码表示和运算0000000110000010010011101111011101011010101111001101001101101001计算机中运算器只有有限位。假定为计算机中运算器只有有限位。假定为n位,则运算结果只能保留低位,则运算结果只能保留低n位,位,故可看成是个只有故可看成是个只有n档的二进制算盘。所以,其模为档的二进制算盘。所以,其模为2n 。当当n=4时,共有时,共有16个机器数:个机器数:00
11、00 1111,可看成是模为,可看成是模为24 的钟表系统。的钟表系统。真值范围为:真值范围为:-8 +7补码的定义补码的定义 假定补码有假定补码有n位,则:位,则:定点整数:定点整数:X补补= 2n + X (-2nX 2n ,mod 2n)定点小数:定点小数:X补补= 2 + X (-1X1,mod 2)1514111312109765483210-2-3-4-5-1-6-7-812-8,-1 is shifted to 8,15. The modul here is 10000 1000 1001 1010 1011 1100 1101 1110 1111 0000 0001 0010
12、0011 0100 0101 0110 01112022-5-2求特殊数的补码求特殊数的补码 -1补补= 2n - 001 = 111(n个个1) (mod 2n)假定机器数有假定机器数有n位位 -2n-1补补= 2n - 2n-1 = 100(n-1个个0) (mod 2n) -1.0补补= 2 - 1.0 = 1.000(n-1个个0) (mod 2) +0补补= -0补补= 000(n个个0) 2022-5-2补码与真值之间的简便转换补码与真值之间的简便转换例例: 设机器数有设机器数有8位,求位,求123和和-123的补码表示。的补码表示。解解: 123 = 127- 4 = 01111
13、111B - 100B = 01111011B -123= - 01111011B 01111011补补= 28 + 01111011 = 100000000 + 01111011 = 01111011 (mod 28),即,即 7BH。 - 01111011补补= 28 01111011 = 10000 0000 - 01111011 = 1111 1111 0111 1011 +1 = 1000 0100 +1 = 1000 0101,即,即 85H。如何快速得到如何快速得到123的二进制表示?的二进制表示?各位取反,末位加各位取反,末位加12022-5-2 Twos Complement
14、 (补码的表示)(补码的表示)u正数:符号位(正数:符号位(sign bit)为)为0,数值部分不变,数值部分不变u负数:符号位为负数:符号位为1,数值部分,数值部分“各位取反,末位加各位取反,末位加1”+0和和-0表表示唯一示唯一变形(模变形(模4)补码:双符号,用于存放可溢出的中间结果。)补码:双符号,用于存放可溢出的中间结果。值太大,用值太大,用4位补码无法表示,故位补码无法表示,故“溢出溢出”!但用变形补码可保留符号位和最高数值位。但用变形补码可保留符号位和最高数值位。BitwiseInverse111111101101110010111010100110000111Decimal01
15、2345678补码补码000000010010001101000101011001111000Decimal-0-1-2-3-4-5-6-7-8 补码补码000011111110110111001011101010011000变形补码变形补码000000000100010000110010000101001100011101000变形补码变形补码0000011111111101110111100110111101011001110002022-5-2如何求补码的真值如何求补码的真值根据补码各位上的根据补码各位上的“权权”,可以求出一个补码的值,可以求出一个补码的值当当N=4时,范围为:时,范围
16、为:-23 23 -1 (即:(即:-8 +7)当当N=32时,范围为:时,范围为:-231 231 -1真值范围:真值范围: 令:令:A补补= an-1an-2 a1a0 则:则: A= -an-1.2n-1+an-2 .2n-2+ a1 .21+ a0 .20 2022-5-2Excess (biased) notion- 移码表示移码表示什么是什么是“excess (biased) notation-移码表示移码表示”? 将每一个数值加上一个偏置常数(将每一个数值加上一个偏置常数( Excess / bias)一般来说,当编码位数为一般来说,当编码位数为 n时,时,bias取取 2n-1
17、 Ex. n=4: Ebiased = E+ 23 ( bias= 23 =10002 ) -8 (+8) 00002 -7 (+8) 00012 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的移码
18、表示惟一的移码表示惟一移码和补码仅第一位不同移码和补码仅第一位不同2022-5-2 Unsigned integer(无符号整数无符号整数)u机器中字的位排列顺序有两种方式:(例:机器中字的位排列顺序有两种方式:(例:32位字位字: 0010112) 高到低位从左到右:高到低位从左到右:0000 0000 0000 0000 0000 0000 0000 1011 高到低位从右到左:高到低位从右到左:1101 0000 0000 0000 0000 0000 0000 0000 MIPS采用高到低从左往右排列采用高到低从左往右排列 Leftmost和和rightmost这两个词有歧义,故用这两
19、个词有歧义,故用LSB(Least Significant Bit)来表示最低有效位,用来表示最低有效位,用MSB来表示最高有效位来表示最高有效位u一般在全部是正数运算且不出现负值结果的场合下,可使用无符号数表一般在全部是正数运算且不出现负值结果的场合下,可使用无符号数表示。例如,地址运算示。例如,地址运算u无符号数的编码中没有符号位无符号数的编码中没有符号位u在字长相同的情况下,它的表示范围大于有符号数在字长相同的情况下,它的表示范围大于有符号数u无符号数总是整数,所以很多时候就简称为无符号数总是整数,所以很多时候就简称为“无符号数无符号数”u最大最大8位无符号整数是位无符号整数是11111
20、111B,其值为其值为255 MSB LSB2022-5-2Signed integer(带符号整数)(带符号整数)u计算机必须能处理正数计算机必须能处理正数(positive) 和负数和负数(negative),MSB表表示数符示数符u有三种表示方式有三种表示方式 Signed magnitude (原码)原码) 用来表示浮点(实)数的尾数用来表示浮点(实)数的尾数 Ones complement (反码)反码) 现已不用现已不用 Twos complement (补码)补码) 50年代以来,所有计算机都用补码来表示定点(整)数年代以来,所有计算机都用补码来表示定点(整)数u为什么用补码表示
21、带符号整数?为什么用补码表示带符号整数? 补码运算系统是模运算系统,加、减运算统一补码运算系统是模运算系统,加、减运算统一 数数0的表示惟一,方便使用的表示惟一,方便使用 比原码和反码多表示一个最小负数比原码和反码多表示一个最小负数 与移码相比,其符号位和真值的符号对应关系清楚与移码相比,其符号位和真值的符号对应关系清楚2022-5-2C语言程序中的整数语言程序中的整数关系表达式关系表达式运算类运算类型型结果结果说明说明0 = = 0U-1 0-1 -2147483647-12147483647U -2147483647-12147483647 (int) 2147483648U-1 -2(u
22、nsigned) -1 -2无符号数:无符号数:unsigned int ( short / long);带符号整数:;带符号整数: int ( short / long)常在一个数的后面加一个常在一个数的后面加一个“u”u”或或“U”U”表示无符号数表示无符号数若同时有无符号数和带符号整数,则若同时有无符号数和带符号整数,则C编译器隐含将带符号整数强制转换为编译器隐含将带符号整数强制转换为无符号数无符号数假定以下关系表达式在假定以下关系表达式在3232位用补码表示的机器上执行,结果是什么?位用补码表示的机器上执行,结果是什么?2022-5-2C语言程序中的整数语言程序中的整数关系关系表达式表
23、达式类类型型结结果果说明说明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 (-2)111B (232-1) 1110B (232-2)带带* *的结果与常规预想的相反!的结果与常规预
24、想的相反!2022-5-2Example: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 Unnormalized(非规格化形式不唯一)(非规格化形式不唯一): 0.1 x 10-8, 10.0
25、 x 10-10科学计数法(Scientific Notation)与浮点数 mantissa(尾数)(尾数) exponent(指数)(指数) 1.011two x 2 -10 binary point 基为基为2for Binary Numbers:只要对尾数和指数分别编码,就可表示一个浮点数(即:实数)只要对尾数和指数分别编码,就可表示一个浮点数(即:实数)2022-5-2浮点数浮点数(Floating Point)的表示范围的表示范围例:画出下述例:画出下述32位浮点数格式的表数范围。位浮点数格式的表数范围。 0 1 8 9 31 第第0 0位数符位数符S S;第;第1 18 8位为位
26、为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 2127 最小正数:最小正数:0.100 x 2000 =(1/2) x 2-128 因为原码是对称的,所以其表示范围是关于原
27、点对称的。因为原码是对称的,所以其表示范围是关于原点对称的。机器机器0 0:阶码为:阶码为0 0 或或 落在下溢区中的数落在下溢区中的数浮点数范围比定点数大,但数的个数没变多,故数之间更稀疏,且不均匀浮点数范围比定点数大,但数的个数没变多,故数之间更稀疏,且不均匀 正下溢 负下溢 - (1-2-24) 2127 数轴 零 可表示的正数 可表示的负数 -2-129129 0 2-129129 (1-2-24) 2127 正上溢 负上溢 2022-5-2浮点数的表示浮点数的表示Normal format(规格化数形式)(规格化数形式) : +/-1.xxxxxxxxxxtwo x 2Exponen
28、t32-bit 规格化数:规格化数: 31 0 S Exponent Significand 1 bit ? bits ? bits S 是符号位(是符号位(Sign) Exponent用用 excess (or biased) notation(移码移码/增码增码)来表示来表示 Significand 表示表示 xxxxxxxxxxxxx,尾数部分,尾数部分 (基可以是基可以是 2/ 4 / 8 / 16,约定信息,无需显式表示,约定信息,无需显式表示 )早期的计算机,各自定义自己的浮点数格式早期的计算机,各自定义自己的浮点数格式问题:浮点数表示不统一会带来什么问题?问题:浮点数表示不统一会
29、带来什么问题?小数点前面总是“1”,故可隐含表示2022-5-2“Father” of the IEEE 754 standard现在所有计算机都采用现在所有计算机都采用IEEE754IEEE754来表示浮点数来表示浮点数19701970年代后期年代后期, IEEE, IEEE成立委员会着手制定浮点数标准成立委员会着手制定浮点数标准19851985年完成浮点数标准年完成浮点数标准IEEE754IEEE754的制定的制定Prof. William Kahan /wkahan/ieee754status/754story.htmlThis standard w
30、as primarily the work of one person, UC Berkeley math professor William Kahan. 直到直到8080年代初,各个机器内部的浮点数表示格式还没有统一年代初,各个机器内部的浮点数表示格式还没有统一 因而相互不兼容,机器之间传送数据时,带来麻烦因而相互不兼容,机器之间传送数据时,带来麻烦 2022-5-2IEEE 754 浮点数标准浮点数标准 单精度单精度 : ( 双精度类似双精度类似 ) S Exponent Significand 1 bit 8 bits 23 bits 符号位(符号位(S): 1 表示表示negativ
31、e ; 0表示表示 positive尾数(尾数(Significand): 规格化尾数最高位总是规格化尾数最高位总是1,所以隐含表示,省,所以隐含表示,省1位位 1 + 23 bits ( single),),1 + 52 bits (double)阶码阶码 / 指数(指数(Exponent): SP规格化数阶码范围为规格化数阶码范围为0000 0001 (-126) 1111 1110 (127)Bias(偏置常数偏置常数)为为127 (single), 1023 (double)SP: (-1)S x (1 + Significand) x 2(Exponent-127)DP: (-1)S
32、 x (1 + Significand) x 2(Exponent-1023)全全0 0和全和全1 1用来表示特殊值!用来表示特殊值!2022-5-2Ex: 将二进制浮点数转换为十进制将二进制浮点数转换为十进制10111 1101 110 0000 0000 0000 0000 0000符号符号: 1 = negative阶码阶码: 0111 1101two = 125ten 偏置调整偏置调整: 125 - 127 = -2尾数尾数: 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.75R
33、epresents: -1.75tenx2-2 = -0.4375 (= -4.375x10-1 )(-1)S x (1 + Significand) x 2(Exponent-127)BEE00000H is the hex. Rep. Of an IEEE 754 SP FP number2022-5-2Ex: 将十进制数转换为浮点形式将十进制数转换为浮点形式-1.275 x 1011. 非规格化非规格化: -12. 752. 转换整数部分转换整数部分: 12 = 8 + 4 = 110023. 转换小数部分转换小数部分: .75 = .5 + .25 = .1124. 合并且规格化合并且
34、规格化: 1100.11 = 1.10011 x 235. 阶码转换阶码转换: 127 + 3 = 128 + 2 = 1000 0010211000 0010 100 1100 0000 0000 0000 0000十六进制表示为:十六进制表示为: C14C0000H2022-5-2Normalized numbers(规格化数)(规格化数)Exponent Significand Object1-254 anything Norms implicit leading 10 0 ?0 nonzero ? 255 0 ?255 nonzero ?前面的定义都是针对规格化数(前面的定义都是针对规
35、格化数(normalized form)How about other patterns?2022-5-2Representation for 0如何表示如何表示 0? 阶码阶码: all zeros 尾数尾数: all zeros 符号位如何符号位如何? Both cases valid. +0: 0 00000000 00000000000000000000000 -0: 1 00000000 000000000000000000000002022-5-2Representation for +/- How to represent +/-? 阶码阶码 : all ones (111111
36、11B = 255) 尾数尾数: all zeros + : 0 11111111 00000000000000000000000 - : 1 11111111 00000000000000000000000Operations 5 / 0 = +, -5 / 0 = - 5+(+) = +, (+)+(+) = + 5 - (+) = -, (-) - (+) = - etc为什么要这样处理为什么要这样处理? 可以利用可以利用+/-作比较。作比较。 例如:例如:X/0Y可作为有效比较可作为有效比较In FP, 除数为除数为0的结果是的结果是 +/- , 不是溢出异常不是溢出异常. :infi
37、nity2022-5-2Representation for “Not 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 阶码阶码 = 255 尾数尾数: 非零非零 NaNs can help with debugging(程(程序调整)序调整)2022-5-2What have we
38、 defined so far? (for SP)Representation for Denorms(非规格化数非规格化数) Used to represent Denormalized numbers 阶码阶码 尾数尾数 值值0 0 +/-00 nonzero Denorms 1-254 anything Norms implicit leading 1255 0 +/- 无穷无穷255 nonzero NaN2022-5-2Representation for Denorms2-1262-1252-1242-1231.00 x2-126 1.11x2-1260.00 x2-126 0.1
39、1x2-1262-1262-1252-1242-12300GAP Normalized numbersDenorms(-1)s0.aaa 2-1262022-5-2u数值数据(数值数据(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
40、Decimal)码表示)码表示u计算机中为什么要用十进制数表示数值?计算机中为什么要用十进制数表示数值? 日常使用的都是十进制数,所以,计算机外部都使用十进制数。在一日常使用的都是十进制数,所以,计算机外部都使用十进制数。在一些有大量数据输入些有大量数据输入/出的系统中,为减少二进制数和十进制数之间的转出的系统中,为减少二进制数和十进制数之间的转换,在计算机内部直接用十进制数表示数值。换,在计算机内部直接用十进制数表示数值。 十进制数的表示十进制数的表示2022-5-2用用ASCII码表示十进制数码表示十进制数u前分隔数字串前分隔数字串 符号位单独用一个字节表示,位于数字串之前。符号位单独用一
41、个字节表示,位于数字串之前。 正号用正号用“+”的的ASCII码码(2BH)表示;负号用表示;负号用“-”的的ASCII码码(2DH)表示表示 例:十进制数例:十进制数+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位中。比前分隔方式位中。比前分隔方
42、式省一个字节。省一个字节。 正数不变;负数高正数不变;负数高4位变为位变为0111. 例:十进制数例:十进制数+236表示为表示为: 32 33 36H 0011 0010 0011 0011 0011 0110B 十进制数十进制数-2369表示为表示为: 32 33 36 79H 0011 0010 0011 0011 0011 0110 0111 1001B缺点:占空间大,且需转换成二进制数或缺点:占空间大,且需转换成二进制数或BCD码才能计算。码才能计算。2022-5-2u编码思想编码思想: 每个十进数位至少有每个十进数位至少有4位二进制表示。而位二进制表示。而4位二进制位可组合成位二进
43、制位可组合成16种状态,去掉种状态,去掉10种状态后还有种状态后还有6种冗余状态。种冗余状态。u编码方案编码方案1 十进制有权码十进制有权码- 每个十进制数位的每个十进制数位的4个二进制位(称为基个二进制位(称为基2码)都有一个确定的权。码)都有一个确定的权。8421码是最常用的十进制有权码。也称自然码是最常用的十进制有权码。也称自然BCD(NBCD)码。)码。2 十进制无权码十进制无权码- 每个十进制数位的每个十进制数位的4个基个基2码没有确定的权。在无权码方案中,用的码没有确定的权。在无权码方案中,用的较多的是余较多的是余3码和格雷码。码和格雷码。3其他编码方案其他编码方案 (5中取中取2
44、码、独热码等)码、独热码等)u符号位的表示:符号位的表示: “+”:1100 ; “-”:1101 例:例:+236=(1100 0010 0011 0110)8421 (占占2个字节个字节) - 2369=(1101 0000 0010 0011 0110 1001)8421 (占占3个字节个字节)用用BCD码表示十进制数码表示十进制数补补0 0以使数占满一个字节以使数占满一个字节2022-5-2第一讲小结第一讲小结u在机器内部编码后的数称为机器数,其值称为真值在机器内部编码后的数称为机器数,其值称为真值u定义数值数据有三个要素:进制、定点定义数值数据有三个要素:进制、定点/浮点、编码浮点、
45、编码u整数的表示整数的表示无符号数:正整数,用来表示地址等;带符号整数:用补码表示无符号数:正整数,用来表示地址等;带符号整数:用补码表示uC语言中的整数语言中的整数无符号数:无符号数:unsigned int ( short / long);带符号数:;带符号数: int ( short / long)u浮点数的表示浮点数的表示符号;尾数:定点小数;指数(阶):定点整数(基不用表示)符号;尾数:定点小数;指数(阶):定点整数(基不用表示)u浮点数的范围浮点数的范围正上溢、正下溢、负上溢、负下溢;与阶码的位数和基的大小有关正上溢、正下溢、负上溢、负下溢;与阶码的位数和基的大小有关u浮点数的精度
46、:浮点数的精度:与尾数的位数和是否规格化有关与尾数的位数和是否规格化有关u浮点数的表示(浮点数的表示(IEEE754标准):标准):单精度单精度SP(float)和双精度)和双精度DP(double)- 规格化数规格化数(SP):阶码:阶码1254,尾数最高位隐含为,尾数最高位隐含为1- “零零” (阶为全阶为全0,尾为全,尾为全0)- (阶为全阶为全1,尾为全,尾为全0)- NaN (阶为全阶为全1,尾为非,尾为非0)- 非规非规格化格化数数 (阶为全阶为全0,尾为非,尾为非0,没有隐藏位,没有隐藏位)u十进制数的表示:十进制数的表示:用用ASCII码或码或BCD码表示码表示2022-5-2
47、第二讲第二讲 非数值数据、数据排列、纠非数值数据、数据排列、纠/检错检错主主 要要 内内 容容u非数值数据的表示非数值数据的表示逻辑数据、西文字符、汉字逻辑数据、西文字符、汉字u数据的宽度数据的宽度u数据的存储排列数据的存储排列大端方式、小端方式大端方式、小端方式u数据的纠错和检错数据的纠错和检错奇偶校验、海明校验、循环冗余校验奇偶校验、海明校验、循环冗余校验2022-5-2u表示表示用一位表示用一位表示 真:真:1 / 假:假:0N位二进制数可表示位二进制数可表示N个逻辑数据,或一个位串个逻辑数据,或一个位串u运算运算 按位进行按位进行 如如:按位与按位与 / 按位或按位或 / 逻辑左移逻辑
48、左移 / 逻辑右移逻辑右移 等等 u识别识别 逻辑数据和数值数据在形式上并无差别,也是一串逻辑数据和数值数据在形式上并无差别,也是一串0/1序列,机器靠指令来识别。序列,机器靠指令来识别。 逻辑数据的编码表示逻辑数据的编码表示2022-5-2u特点特点 是一种拼音文字,用有限几个字母可拼写出所有单词是一种拼音文字,用有限几个字母可拼写出所有单词 只对有限个字母和数学符号、标点符号等辅助字符编码只对有限个字母和数学符号、标点符号等辅助字符编码 所有字符总数不超过所有字符总数不超过256个,使用个,使用7或或8个二进位可表示个二进位可表示u表示(表示(常用编码为常用编码为7位位ASCII码)码)
49、要求必须熟悉数字、字母和空格要求必须熟悉数字、字母和空格(SP)的表示的表示 十进制数字:十进制数字:0/1/2/9 英文字母:英文字母:A/B/Z/a/b/z 专用符号:专用符号:+/-/%/*/&/ 控制字符(不可打印或显示)控制字符(不可打印或显示)u操作操作 字符串操作,如字符串操作,如:传送传送/比较等比较等 西文字符的编码表示西文字符的编码表示2022-5-2u特点特点 汉字是表意文字,一个字就是一个方块图形。汉字是表意文字,一个字就是一个方块图形。 汉字数量巨大,总数超过汉字数量巨大,总数超过6万字,给汉字在计算机内部的表示、汉万字,给汉字在计算机内部的表示、汉字的传输与
50、交换、汉字的输入和输出等带来了一系列问题。字的传输与交换、汉字的输入和输出等带来了一系列问题。u编码形式编码形式 有以下几种汉字代码:有以下几种汉字代码: 输入码:输入码:对汉字用相应按键进行编码表示,用于输入对汉字用相应按键进行编码表示,用于输入 内码:内码:用于在系统中进行存储、查找、传送等处理用于在系统中进行存储、查找、传送等处理 字模点阵或轮廓描述字模点阵或轮廓描述: 描述汉字字模点阵或轮廓,用于显示描述汉字字模点阵或轮廓,用于显示/打印打印 汉字及国际字符的编码表示汉字及国际字符的编码表示问题:西文字符有没有输入码?有没有内码?问题:西文字符有没有输入码?有没有内码?有没有字模点阵或
51、轮廓描述?有没有字模点阵或轮廓描述?2022-5-2向计算机输入汉字的方式:向计算机输入汉字的方式: 手写汉字联机识别输入,或者是印刷汉字扫描输入后自动识别,手写汉字联机识别输入,或者是印刷汉字扫描输入后自动识别,这两这两种方法现均已达到实用水平。种方法现均已达到实用水平。 用语音输入汉字用语音输入汉字,虽然简单易操作,但离实用阶段还相差很远。,虽然简单易操作,但离实用阶段还相差很远。 利用英文键盘输入汉字利用英文键盘输入汉字:每个汉字用一个或几个键表示,这种对每个汉字用一个或几个键表示,这种对每个汉字用相应按键进行的编码称为汉字每个汉字用相应按键进行的编码称为汉字“输入码输入码”,又称外码。
52、,又称外码。输入码的码元为按键。是最简便、最广泛的汉字输入方法。输入码的码元为按键。是最简便、最广泛的汉字输入方法。 常用的方法有:搜狗拼音、五笔字型、智能常用的方法有:搜狗拼音、五笔字型、智能ABC、微软拼音等微软拼音等使用汉字输入码的原因:使用汉字输入码的原因: 键盘面向西文设计键盘面向西文设计,一个或两个西文字符对应一个按键,非常方便。,一个或两个西文字符对应一个按键,非常方便。 汉字是大字符集,汉字是大字符集,专门的汉字输入键盘由于键多、查找不便、成本高专门的汉字输入键盘由于键多、查找不便、成本高等原因而几乎无法采用。等原因而几乎无法采用。汉字的输入码汉字的输入码2022-5-2问题:
53、西文字符常用的内码是什么?问题:西文字符常用的内码是什么?其内码就是其内码就是ASCII码。码。对于汉字内码的选择,必须考虑以下几个因素:对于汉字内码的选择,必须考虑以下几个因素: 不能有二义性,即不能和不能有二义性,即不能和ASCII码有相同的编码。码有相同的编码。 尽量与汉字在字库中的位置有关,便于汉字查找和处理。尽量与汉字在字库中的位置有关,便于汉字查找和处理。 编码应尽量短。编码应尽量短。国标码(国标交换码)国标码(国标交换码) 1981年我国颁布了信息交换用汉字编码字符集年我国颁布了信息交换用汉字编码字符集基本集基本集(GB231280)。该标准选出该标准选出6763个常用汉字,为每
54、个汉字规个常用汉字,为每个汉字规定了标准代码,以供汉字信息在不同计算机系统间交换使用定了标准代码,以供汉字信息在不同计算机系统间交换使用可在汉字国标码的基础上产生汉字机内码可在汉字国标码的基础上产生汉字机内码字符集与汉字的内码字符集与汉字的内码2022-5-2u由三部分组成:由三部分组成: 字母、数字和各种符号字母、数字和各种符号,包括英文、俄文、日文平假名与片假,包括英文、俄文、日文平假名与片假名、罗马字母、汉语拼音等共名、罗马字母、汉语拼音等共687个个 一级常用汉字一级常用汉字,共,共3755个,按汉语拼音排列个,按汉语拼音排列 二级常用汉字二级常用汉字,共,共3008个个 ,不太常用,
55、按偏旁部首排列,不太常用,按偏旁部首排列u汉字的区位码汉字的区位码 码表由码表由94行、行、94列组成,行号为区号,列号为位号,各占列组成,行号为区号,列号为位号,各占7位位 指出汉字在码表中的位置,共指出汉字在码表中的位置,共14位,区号在左、位号在右位,区号在左、位号在右u汉字的国标码汉字的国标码 每个汉字的区号和位号各自加上每个汉字的区号和位号各自加上32(20H),得到其),得到其“国标码国标码” 国标码中区号和位号各占国标码中区号和位号各占7位。在计算机内部,为方便处理与存位。在计算机内部,为方便处理与存储,前面添一个储,前面添一个0,构成一个字节,构成一个字节GB2312-80字符
56、集字符集2022-5-2汉字汉字内码内码u至少需至少需2个字节才能表示一个汉字内码。为什么?个字节才能表示一个汉字内码。为什么?由汉字的总数决定!由汉字的总数决定!u可在可在GB2312国标码的基础上产生汉字内码国标码的基础上产生汉字内码为与为与ASCII码区别,将国标码的两个字节的第一位置码区别,将国标码的两个字节的第一位置“1”后后得到得到一种一种汉字内码汉字内码 例如,例如,汉字汉字“大大”在码表中位于第在码表中位于第20行、第行、第83列。因此区列。因此区位码为位码为0010100 1010011,国标码为,国标码为00110100 01110011,即,即3473H。前面的。前面的3
57、4H和字符和字符“4”的的ACSII码相同,后面的码相同,后面的73H和字符和字符“s”的的ACSII码相同,将每个字节的最高位各设为码相同,将每个字节的最高位各设为“1”后,就得到其内码:后,就得到其内码:B4F3H (1011 0100 1111 0011B),因而不会和因而不会和ASCII码混淆。码混淆。2022-5-2国际字符集国际字符集国际字符集的必要性国际字符集的必要性u不同地区使用不同字符集内码,如中文不同地区使用不同字符集内码,如中文GB2312 / Big5、日文日文Shift-JIS / EUC-JP等。在安装中文系统的计算机中打开日文文件,会出现乱码。等。在安装中文系统的
58、计算机中打开日文文件,会出现乱码。u为使所有国际字符都能互换,必须创建一种涵盖全部字符的多字符集。为使所有国际字符都能互换,必须创建一种涵盖全部字符的多字符集。国际多字符集国际多字符集u通过对各种地区性字符集规定使用范围来唯一定义各字符的编码。通过对各种地区性字符集规定使用范围来唯一定义各字符的编码。u国际标准国际标准ISO/IEC 10646提出了一种包括全世界现代书面语言文字所使用的提出了一种包括全世界现代书面语言文字所使用的所有字符的标准编码,有所有字符的标准编码,有4个字节编码个字节编码(UCS-4)和和2字节编码字节编码(UCS-2) 。u我国(包括香港、台湾地区)与日本、韩国联合制
59、订了一个统一的汉字字符我国(包括香港、台湾地区)与日本、韩国联合制订了一个统一的汉字字符集(集(CJK编码),共收集了上述不同国家和地区共约编码),共收集了上述不同国家和地区共约2万多汉字及符号,采万多汉字及符号,采用用2字节编码字节编码 (即:即:UCS-2) ,已被批准为国家标准,已被批准为国家标准(GB13000 )。uWindows操作系统操作系统(中文版中文版)已采用中西文统一编码,收集了中、日、韩三国已采用中西文统一编码,收集了中、日、韩三国常用的约常用的约2万汉字,称为万汉字,称为“Unicode”,采用采用2字节编码,与字节编码,与UCS-2一致一致 。 2022-5-2u为便
60、于打印、显示汉字,汉字字形必须预先存在机内为便于打印、显示汉字,汉字字形必须预先存在机内字库字库 (font):所有汉字形状的描述信息集合:所有汉字形状的描述信息集合不同字体不同字体 (如宋体、仿宋、楷体、黑体等如宋体、仿宋、楷体、黑体等) 对应不同字库对应不同字库从字库中找到字形描述信息,然后送设备输出从字库中找到字形描述信息,然后送设备输出u字形主要有两种描述方法:字形主要有两种描述方法:字模点阵描述(图像方式)字模点阵描述(图像方式)轮廓描述(图形方式)轮廓描述(图形方式)- 直线向量轮廓直线向量轮廓- 曲线轮廓(曲线轮廓(True Type字形)字形)汉字的字模点阵码和轮廓描述汉字的字模点阵码
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中八年级英语上册Unit 5 Do you want to watch a game show Section B (1a1d) 听说课深度教学设计
- CN118735200B 一种基于嵌入式强化学习的调度与维护优化方法及系统 (东华大学)
- 小学英语三年级上册自然拼读语音启蒙教案
- 初中七年级道德与法治《生命何以珍贵:从自然属性到社会价值的深度探索》教案
- 小学数学北师大版二年级上册 五 2~5的乘法口诀
- 第三方服务机构选聘工作实施方案
- CN118588366B 一种pvc线缆及其制备方法 (广东博雷电线电缆有限公司)
- 配电网台区运行分析报告
- 直方图制作指导书
- 企业智能办公建设方案
- 暨大干细胞培训课件
- DB11-T 3035-2023 建筑消防设施维护保养技术规范
- 警犬上课课件
- 2025广西壮族自治区药用植物园招聘高层次人才21人笔试模拟试题及答案解析
- 重庆国资管理办法
- 1688运营培训课件
- 法治副校长培训
- 环卫保洁员安全知识与防护培训
- DLT5210.1-2021电力建设施工质量验收规程第1部分-土建工程
- T/CHES 122-2023建设项目涌潮影响评价技术导则
- DB31/T 1035-2017绿化有机覆盖物应用技术规范
评论
0/150
提交评论