1 / 62

中山 大 学 信息科学技术学院 郭雪梅 Tel:39943108 Email:guoxuem@mail.sysu

微型计算机技术及应用. 中山 大 学 信息科学技术学院 郭雪梅 Tel:39943108 Email:guoxuem@mail.sysu.edu.cn URL1 : http://human-robot.sysu.edu.cn/course. 计算机当中的数和编码系统. 进位计数制及其表示方法 数制之间的转换 字和各种字符的编码 小结. 进位计数制及其表示方法. (一)、进位计数制及其要素: 进位计数制:按进位原则进行计数的方法。 例:十进制数有 : 0 、 1 、 2 、 3 、 4 、 5 、 6 、 7 、 8 、 9 十种状态。

Télécharger la présentation

中山 大 学 信息科学技术学院 郭雪梅 Tel:39943108 Email:guoxuem@mail.sysu

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 微型计算机技术及应用 中山 大 学 信息科学技术学院 郭雪梅 Tel:39943108 Email:guoxuem@mail.sysu.edu.cn URL1:http://human-robot.sysu.edu.cn/course

  2. 计算机当中的数和编码系统 • 进位计数制及其表示方法 • 数制之间的转换 • 字和各种字符的编码 • 小结

  3. 进位计数制及其表示方法 (一)、进位计数制及其要素: 进位计数制:按进位原则进行计数的方法。 例:十进制数有 : 0、1、2、3、4、5、6、7、8、9十种状态。 我们说:十进制数基数10,变化范围0~(10-1), 逢十进一。 看一个十进制数: 4 0 9 4 每一位十种数码的状态(0~9) 千 百 十 个 本位绝对值的大小=数×位权 103102101100 如:千位= 4×103=4000

  4. 十进制数有二个要素: 1. 基数:十 每一位 0、1、2、3、4、5、6、7、8、10-1 (逢 十 进 一)。 2. 位权:10i 某一位数绝对值大小 = 数×位权. 二个要素: 适用于二、八、十六进制。 二进制数:基数2 位权2i 八进制数:基数8 位权8i 十六进制数: 基数16 位权16i

  5. (二)、 进位计数制的表示方法: 1234.56= 1  103+2  102+3  101+4  100+5  10-1+6  10-2 推广到一般形式(任意十进制): N=±[k n 10n+k n-1 10 n-1+……+k0 100 +k-1 10-1+…… +k-m 10-m] = ±  [ k i 10i] (i= -m~n) 任何某一位数大小 = k i 10i 对于任意进制:N= ±  [k i  R i] (i=-m~n) R — 基数 , 逢R进一. Ri— 位权

  6. 例如:二进制数 B=10011101 B=1  27+1  24+1  23+1  22+1  20 =(157)10 在计算机里进行运算和处理均是按二进制数处理的。 而二进制数写起来麻烦; 书写时又以八进制或十六进制表示; 日常生活中又常用十进制, 因此就有:二 十 八  十 二  八 数制之间转换问题 十六  十 二  十六

  7. 十进制向二进制转换 1.十进制整数转换为二进制整数 十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。 7

  8. (217)10÷2 ----得到余数k0 /2 整数  商  余数: 按照相反的方向写下来。 /2 /2 /2 /2 /2 /2 /2 /2 217  108  54  27  13  6  3  1  0 ----商         1 0 0 1 1 0 1 1 --余数 (217) 10=(11011001)2 书写方向

  9. 2 2 2 2 2 2 2 (余1 10001011 69 (余1 34 (余0 (余1 17 8 (余0 (余0 4 (余0 2 1 Example 转换十进制数 139 到二进制数。 Solution 139 除余法 (139)10=(10001011)2 9

  10. 2.十进制小数转换为二进制小数 十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。 10

  11. 十进制小数向二进制转换 11

  12. Example 转换十进制小数0.6875到二进制 Solution 0.6875 2 … 整数部分为 1 1.3750 0.375 2 (0.6875)10 = (0.1011)2 … 整数部分为 0 0.750 2 … 整数部分为 1 1.500 0.500 2 … 整数部分为 1小数部分为 0 1.0 12

  13. Example 将小数 0.4 转换成六位二进制数。 Solution 将要转换的数字写在左上角,然后连续乘 2。将积的整数部分取出。如此进行,直到积中的小数部分为零,或者达到所要求的六位为止。 0.4  0.8  1.6  1.2  0.4  0.8  1.6 0 . 0 1 1 0 0 1 13

  14. 3. 二→十 同样可以用公式进行 (0. 1001)2 =1  2-1+1  2-4=0. 5+0. 0625=(0. 5625)10 (0.100111)2=1  2-1+1  2-4+1  2-5+1  2-6 =(0. 609375)10 看一下常用的几种数制写法:八位二进制数

  15. 十进制 二进制 八进制 十六进制 BCD 0 0 0 0 0 • 1 01 1 1 1 • 2 10 2 2 10 • 3 11 3 3 11 • 4 100 4 4 100 • 5 101 5 5 101 • 6 110 6 6 110 • 7 111 7 7 111 8 1000 10 8 1000 • 9 1001 11 9 1001 • 10 1010 12 A 10000 • 11 1011 13 B 10001 • 12 1100 14 C 10010 • 13 1101 15 D 10011 • 14 1110 16 E 10100 • 15 1111 17 F 10101 • 16 10000 20 10 10110 • 。 。 。 11 。 • 。 。 。 12 。 • 。 。 。 。 。 • (255)D 11111111B 377Q FFH (10,0101,0101)BCD

  16. (二)、 二 八,二 十六,二 BCD之间转换 1、 二 八 • 二→八: • 以小数点为界向左向右三位一段,不够补0, • 三位二进制数用一位八进制数表示。 • 例:( 1,101,001.010,011,1 )2 •  不够补0  不够补0 • (001 101 001. 010 011100)2=(151.234)8 •  八→二: • 一位八进制数用三位二进制数表示. • (151.234)8=(001 101 001. 010 011 100)2

  17. 2、二 十六: 二→十六: 以小数点为界向左向右四位一段, 不够补0, 四位二进制数用一位十六进制数表示。 例:( 110 1001.0100 111 )2 →( 69.4E )16  不够补0  不够补0 (0 1 1 0,1 0 0 1 . 0 1 0 0,1 1 1 0)2=(69 . 4E)16 十六→二:一位十六进制数用四位二进制数表示。 例: (69 . 4E)16=(0 1 1 0,1 0 0 1 . 0 1 0 0,1 1 1 0)2

  18. 3、 二BCD BCD数: 常用8421码,每一位十进制数用四位二进制编码表示。 1111B 9D 1001BCD 10D 0001 0000BCD BCD码与二进制数之间转换没有直接关系, 必须先转换成十进制,然后转换成二进制。 例:1111111B=255D=0010,0101,0101BCD 0010,0101,0101BCD=255D=1111 1111B

  19. 字和各种字符的编码 字和各种字符按照特定规则用二进制编码在机器中表示。编码有各种方式: 目前规定在微型机中最普遍采用ASCⅡ码 (American Standard Code for Information Interchange )美国标准信息交换码。 (一)二进制数的运算 (二)带符号数的表示

  20. ASCⅡ码: 采用七位二进制编码,可以表示128个字符。 bit7作奇偶校验位,在机器中表示时,常认为“0”, 用一个字长(8位)表示一个ASCⅡ字符。 常用的ASCⅡ字符: 0—9 的ASCⅡ码30H—39H A—Z 的ASCⅡ码41H—5AH a—z 的ASCⅡ码61H—7AH

  21. (一)二进制数的运算 (二)带符号数的表示 1. 机器数与真值 2. 原码 3. 反码 4. 补码

  22. 上面提到的是一种无符号数, 机器数中会有正有负。符号怎么表示呢? 通常数的最高位为符号位,对于字长8位机器数: D7为符号位: 0表示“+”,1表示“—”。符号数码化了。 D6~D0为数字位。 如: X=(01011011)2=+91 X=(11011011)2= - 91 连同符号位在一起作为一个数称为机器数, 机器数的数值称为的真值。 如: N1=+ 1011011 N2= - 1011011 为真值 0 1011011 1 101 1011 为机器数

  23. 符号数码化了,对数据进行运算时,符号位应如何处理?符号数码化了,对数据进行运算时,符号位应如何处理? • 把符号位和数值位一起编码:原码,反码,补码。 2. 原码: 正数符号位用“0”表示,负数符号用“1”表示, 这种表示法称为原码。 X=+105 [X]原= 0 1101001 X=-105 [X]原= 1 1101001 符号 数值 原码表示简单,真值 转换方便,减法不方便。 引进反码,补码。

  24. 3. 反码: 正数反码表示与原码相同, (最高位“0”表示正,其余位为数值位。) 负数的反码表示为负数原码的符号位不变尾数按位取反。 例: [+4]反= 0 0000100 [-4]反= 1 1111011 [+127]反 = 0 1111111 [-127]反 = 1 0000000 [+0]反= 0 0000000 [-0]反= 1 1111111

  25. 4 补码 定义: 若X>0, 则[X]补= [X]反= [X]原 若X<0, 则[X]补= [X]反+1 二进制补码表示法,是现在最普遍,最重要,应用最广泛的整数表示法 二进制数: 补码: 25

  26. 补码的运算原理 模(module)就是一个计数系统的最大容量,其大小等于以进位计数制基数为底,以位数为指数的幂。凡是用器件进行的运算都是有模运算,运算结果超过模的部分被运算器自动丢弃。因此,当器件为n位时,有: X=2n+X (mod 2n) 不难验证, [X]补=2n+X (mod 2n) 因此, [XY]补= 2n+ (XY) (mod 2n) = (2n+ X)+ (2n  Y) = [X]补+ [Y]补 26

  27. [例]: X= –52= – 0110100 [X]原 = 10110100 [X]反 = 11001011 [X]补 = [X]反+1=11001100 n位补码表示数值的范围是 对应的补码是1000~ 0111。 27

  28. 数0的补码: [+0]补= [+0]原=00000000 [-0]补= [-0]反+1=11111111+1 =1 00000000 对8位字长,进位被舍掉 ∴[+0]补= [-0]补= 00000000 即:数0的补码是唯一的。 28

  29. 特殊数10000000 该数在原码中定义为: -0 在反码中定义为: -127 在补码中定义为: -128 对无符号数:(10000000)2 = 128 29

  30. 8位有符号数的表示范围: 对8位二进制数: 原码: -127 ~ +127 反码: -127 ~ +127 补码: -128 ~ +127 想一想:16位有符号数的表示范围是多少? 30

  31. [例]: X=-0110100,Y=+1110100,求[X+Y]补 [X]原=10110100 [X]补= [X]反+1=11001100 [Y]补= [Y]原=01110100 所以: [X+Y]补= [X]补+ [Y]补 =11001100+01110100 =01000000 31

  32. 4. 符号数运算中的溢出问题 进(借)位—— 在加法过程中,符号位向更高位产生进位; 在减法过程中,符号位向更高位产生借位。 溢出—— 运算结果超出运算器所能表示的符号数范围 32

  33. 溢出的判断方法 方法1: 同号相减或异号相加——不会溢出。 同号相加或异号相减——可能溢出: 两种情况: 同号相加时,结果符号与加数符号相反——溢出;  异号相减时,结果符号与减数符号相同——溢出。 方法2: 两个带符号二进制数相加或相减时,若 C7C6=1, 则结果产生溢出。 C7为最高位的进(借)位;C6为次高位的进(借)位。 33

  34. [例]: • 有符号数运算,有溢出表示结果是错误的 • 无符号数运算,有进位表示结果是错误的 CASE1: CASE2: 1 0 1 1 0 1 0 1 + 1 0 0 0 1 1 1 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 + 0 1 1 0 0 0 1 1 1 0 1 0 0 1 0 1 CASE3: 0 1 0 0 0 0 1 0 + 1 1 0 0 1 1 0 1 1 0 0 0 0 1 1 1 1 34

  35. 定点数与浮点数 计算机处理的数值数据多数带有小数,小数点在计算机中通常有两种表示方法,一种是约定所有数值数据的小数点隐含在某一个固定位置上,称为定点表示法,简称定点数;另一种是小数点位置可以浮动,称为浮点表示法,简称浮点数。 1. 定点数表示法(fixed-point) 所谓定点格式,即约定机器中所有数据的小数点位置是固定不变的。在计算机中通常采用两种简单的约定:将小数点的位置固定在数据的最高位之前,或者是固定在最低位之后。一般常称前者为定点小数,后者为定点整数。 35

  36. 定点小数是纯小数 约定所有机器数的小数点隐含在符号位之后、有效部分最高位之前,叫定点纯小数机器数,简称定点小数,例如 小数点位置 无论是定点整数,还是定点小数,都可以有原码、反码和补码三种形式。例如定点小数 如果这是个原码表示的定点小数,[x]原=(11110000)B,则 x= (-0.111)2=(-0.875)10,如这是补码表示的定点小数, [x]补=(11110000)2,则[x]原=(10010000)2,则 x= (-0.001)2=(-0.125)10。 36

  37. 定点整数是纯整数,约定的小数点位置在有效数值部分最低位之后。定点整数是纯整数,约定的小数点位置在有效数值部分最低位之后。 定点整数的表示范围是: 1≤ | x | ≤ 2^n - 1 当数据小于定点数能表示的最小值时,计算机将它们作0处理,称为下溢;大于定点数能表示的最大值时,计算机将无法表示,称为上溢,上溢和下溢统称为溢出。 小数点位置 37

  38. 2. 浮点数(对应科学计数法) 计算机多数情况下采作浮点数表示数值,它与科学计数法相似,把一个二进制数通过移动小数点位置表示成阶码和尾数两部分: B = ±S×2^±J S-尾数,为小数或整数。J-阶码,为整数。例如: 110.011(B)=1.10011×2^+10=11001.1×2^-10=0.110011× 2^+11 尾数 阶码 计算机中的浮点数:阶码+尾数 阶符 阶码 数符 尾数 0 11 0 110011 -0.000110011(B)=-0.110011× 2^-11 1 11 1 110011 阶符 阶码 数符 尾数  38

  39. 浮点数所表示的范围比定点数大。假设机器中的数由 8 位二进制数表示(包括符号位):在定点机中这 8 位全部用来表示有效数字(包括符号);在浮点机中若阶符、阶码占 3 位,尾符、尾数占 5 位,在此情况下,若只考虑正数值 定点机小数表示的数的范围是 0.0000000 到 0.1111111,相当于十进制数的 0 到 127/128, 而浮点机所能表示的数的范围则是 2 ^- 11×0.0001 到 2^11×0.1111,相当于十进制数的 1/128 到 7.5 。 显然,都用 8 位,浮点机能表示的数的范围比定点机大得多。 一般来说,增加尾数的位数,将增加可表示区域数据点的密度,从而提高了数据的精度;增加阶码的位数,能增大可表示的数据区域。 浮点数运算后结果必须化成规格化形式,所谓规格化,是指对于原码尾数来说,应使最高位数字S1=1,如果不是1且尾数不是全0时就要移动尾数直到S1=1,阶码相应变化,保证N值不变。 39

  40. 浮点数的原码、反码、补码表示法 浮点数的原码、反码、补码是对阶码和尾数分别进行。例: (1)X = +0.11101101×2^-101 [X]原= 1101 0 11101101 [X]反= 1010 0 11101101 [X]补= 1011 0 11101101 (2)X = -0.11101101×2^+101 [X]原= 01011 11101101 [X]反= 01011 00010010 [X]补= 01011 00010011 (3)X = -0.11101101×2^-101 [X]原= 11011 11101101 [X]反= 10101 00010010 [X]补= 10111 00010011 注意:浮点数的补码负数表示范围比原码大。 40

  41. 【例 2】设机器字长16位,定点表示,尾数15位,数符1位,问:  (1)定点原码整数表示时,最大正数是多少?最小负数是多少?   (2)定点原码小数表示时,最大正数是多少?最小负数是多少? [解:] (1)定点原码整数表示 最大正数值 0111 111 111 111 111 最小负数值 1111 111 111 111 111 最大正数值=(2^15-1)10=(+32767)10 最小负数值=-(2^15-1)10=(-32767)10 (2)定点原码小数表示 最大正数值=(1-2^-15)10=(+0.111...11)2 最小负数值=-(1-2^-15)10=(-0.111..11)2 41

  42. 字符的编码 • 西文字符的编码 ASCII 码(美国国家标准信息交换码) 扩展ASCII码 unicode编码 • 汉字编码 • 输入码 • 交换码 (国标码) • 内部码 • 字型码 (输出码)

  43. ASCII 码 7 6 5 4 3 2 1 ASCII码是美国信息交换标准代码。 (American Standard Code for Information Interchange) 包括0~9十个数字,大小写英文字母 及专用符号等95种可打印字符。 Computer的ASCII码 01000011 01101111 01101101 01110000 01110101 01110100 01100101 01110010

  44. 扩展ASCII码 • 由7位二进制编码构成的ASCII基本字符集只有128个字符,太少了。 • 在原ASCII码128个符号的基础上,将它的最高位设置为1进行扩展,能够表示的编码范围为:00000000~11111111,共可表示256个字符和图形符号,称为扩展ASCII码字符集。 • 扩展ASCII的前128个字符的编码与原ASCII码相同。

  45. Unicode编码 • 国际标准化组织在20世纪90年代初期制定的各国文字、符号的统一性编码。该编码采用16位编码体系,可容纳65536个字符编码,这么多的符号几乎能够表达世界上所有书面语言中的不同符号。 • Unicode主要想解决多语言的计算,随着国际互联网的迅速发展,不同国家之间的人们进行数据交换的需求越来越大,Unicode因此而成了当今最为重要的交互和显示的通用字符编码标准。 • Unicode适用于所有已知的编码,覆盖了美国、欧洲、中东、非洲、印度、亚洲和太平洋的语言,以及古文和专业符号。

  46. 交换码(外部码内部码) 机内码 机内码向字形码转换 显示输出 打印输出 汉字编码 字符代码化(输入码)

  47. (1)汉字输入编码方法 • 数字编码 数字编码就是用数字串代表一个汉字的输入,常用的有国际区位码。如:“中”5448 、 “…”0113 • 拼音码 拼音码是以汉语读音为基础的输入方法。常用的有智能全拼、微软拼音、紫光拼音、智能狂拼等。 • 字形编码 字形编码是以汉字的形状确定的编码。常用的有五笔字形、表形码等。

  48. (2)汉字内部码 • 汉字内部码是汉字在设备或信息处理系统内部最基本的表达形式,是在设备和信息处理系统内部存储、处理、传输汉字用的代码。 1.汉字信息的编码知识 ⑴国标码:是指我国1981年公布的“中华人民共和国国家标准信息交换汉字编码”,代号为“GB2312-80”。由连续的两个字节组成。 2.机内码:在计算机内表示汉字的代码是汉字机内码,汉字机内码由国标码演化而来,把表示国标码的两个字节的最高位分别加“1”,就变成汉字机内码 3.输入码: 汉字输入码是指直接从键盘输入的各种汉字输入方法的编码,属于外码。 4.字型点阵码:用点阵方式来构造汉字字型,然后存储在计算机内,构成汉字字模库。目的是为了能显示和打印汉字。

  49. 几种编码之间的转换关系如下: • 汉字的区位码、国标码、内部码三者之间存中如下的转换关系: • 国标码 = 区位码+2020H(即把区位码的区号和位号分别加上十进制数32) • 内部码 = 国标码+8080H(即把国标码的高位字节和低位字节分别加上十进制数128) • 内部码 = 区位码+A0A0(即把区位码的区号与位号分别加上十进制数160)

  50. (3)汉字字形码 • 汉字字形码是表示汉字字形的字模数据,也称字模码,是用点阵表示的汉字字形代码,它是汉字的输出形式。

More Related