1 / 140

第二章 计算机中的信息表示

第二章 计算机中的信息表示. 数值型数据. 数据信息. 非数值型数据. 控制信息. 指令信息等. 本章类容 : 1. 数值数据的进位数值 2. 带符号数的表示 ( 原码、补码、反码、移码 ) 3. 小数的表示 ( 定点小数、浮点数 ) 4. 字符表示方法 5. 指令信息的表示 ( 指令格式、寻址方法、功能分类 ). 第一节 数据信息的表示. 进位计数制. 数值数据表示三要数. 符号的表示. 小数点的处理. 2.1. 进位计数制. 数制中的三个基本名词术语: 数码: 用不同的数字符号来表示一种数制的 数值,这些数字符号称为“数码”。

Download Presentation

第二章 计算机中的信息表示

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. 第二章 计算机中的信息表示 数值型数据 数据信息 非数值型数据 控制信息 指令信息等 本章类容: 1.数值数据的进位数值 2.带符号数的表示(原码、补码、反码、移码) 3.小数的表示(定点小数、浮点数) 4.字符表示方法 5.指令信息的表示(指令格式、寻址方法、功能分类)

  2. 第一节 数据信息的表示 进位计数制 数值数据表示三要数 符号的表示 小数点的处理

  3. 2.1. 进位计数制 数制中的三个基本名词术语: 数码:用不同的数字符号来表示一种数制的 数值,这些数字符号称为“数码”。 基: 数制所使用的数码个数称为“基”。 权: 某数制各位所具有的值称为“权”。

  4. 2.1.1 十进制数(Decimal System) 数码:0、1、…… 8、9 基:10(逢十进一,借一当十) 权:以10为底的幂 任何一个十进制数DnDn-1…D1D0D-1…,可以表示成按权展开的多项式: Dn×10n+Dn-1×10n-1+…+D1×101+D0×100+D-1×10-1+…+D-m×10-m 例如:1234.5的按权展开多项为: 1234.5=1×103+2×102+3×101+4×100+5×10-1

  5. 2.1.2 二进制数(Binary System) 数码:0和1 基:2 权:以2为底的幂 任何一个二进制数BnBn-1…B1B0B-1…B-m,可以表示成按权展开的多项式: Bn×2n+Bn-1×2n-1+…+B1×21+B0×20+B-1×2-1+…+B(-m+1)×2-(m-1)+B-m×2-m 例如: 1101.01的按权展开多项为: 1101.01=1×23+1×22+0×21+1×20+0×2-1+1×2-2

  6. 2.1.3 八进制数(Octave System) 数码:0、1、…… 6、7 基:8 权:以8为底的幂 八进制数的一般式可以表示为: On×8n+On-1×8n-1+…+O1×81+O0×80+O-1×8-1+…+O(-m+1)×8-(m-1)+O-m×8-m

  7. 2.1.3 十六进制数(Hexadecimal System) 数码:0、1、…… 8、9、A(1010)、B(1011)、C(1100)、D(1101)、E(1110)、F(1111) 基:16 权:以16为底的幂 十六进制数的一般式可以表示为: Hn×16n+Hn-1×16n-1+…+H1×161+H0×160+H-1×16-1+…+H(-m+1)×16-(m-1)+H-m×16-m 例如: A89B.CD的按权展开多项为: (A89B.CD)16=A×163+8×162+9×161+B×160+C×16-1+D×16-2

  8. 2.2. 各种进位制之间的相互转换 2.2.1.任意进制数转换为十进制数 二进制数、八进制数、十六进制数等各种进制数转换为十进制数可统一表示为下式: 式中: R ─ 某种进位计数制的基数; i ─ 位序号; Ki─ 第i位上的一个数码为0~R-1中的任一个; Ri ─ 则表示第i位上的权; m,n ─ 最低位和最高位的位序号。 用上式可将任何一个二进制数、八进制数、十六进制数直接转换为十进制数,这叫做按权展开法。

  9. 任意进制转换为十进制例子 ⑴. 二进制数转换为十进制数 (1011.0101)2 =1×23+0×22+1×21+1×20+0×2-1+1×2-2+0×2-3+1×2-4 =8+0+2+1+0+1/4+0+1/16 =(11.3125)10 ⑵. 八进制数转换为十进制数 (75.21)8=7×81+5×80+2×8-1+1×8-2 =56+5+2/8+1/64 =(45.20238)10 ⑶. 十六进制数转换为十进制数 (175.FB)16=1×162+7×161+5×160+15×16-1+11×16-2 =256+112+5+15/16+11/162 =(373.98046875)10

  10. 2.2.2. 十进制整数转换为二进制数 (1). 除基取余法 (连除基数、倒取余) 方法: “除2取余”,即十进制整数被2除,取其余数,商再被2除,取其余,……,直到商为0时结束运算。然后把每次的余数按倒序规律排列就得到等值的二进制。 例:把一个十进制数156转换为二进制数。 结果:(156)10=(10011100)2

  11. 2.2.2. 十进制整数转换为二进制数 (2).减权定位法 方法:从高位起依次减各位的权,若够减,则该位为1,差值继续往下比较,否则该位为0,跳过该位,直所有位比较完成 例:将(75)10转换为二进制数 位权 差 位值 75-64 = 11… 1 11<32 … 0 11<16 … 0 11-8 = 3 … 1 3 <4 … 0 3 -2 = 1 … 1 1- 1 = 0 … 1 (75)10=(1001011)2

  12. 2.2.3. 十进制纯小数转换为二进制数 (1). 乘基取整法 (连乘基数、正取整) 方法:把十进制纯小数乘以2,取其整数,乘积的小数部分再乘以2,取整..….,直到乘积的小数部分为0。然后把每次乘积的整数部分按正序规律排列,即为等值的二进制数。 例: 将(0.6875)10转换为二进制数: 小数 基 积 取整 0.6875×2=1.3750 l 0.375 ×2=0.75 0 0.75 ×2=1.5 1 0.5 ×2 =1.0 1 结果为 (0.6875)10 =(0.1011)2

  13. (2).减权定位法 方法:与整数减权定位类似,从高位起依次减各位的权,若够减,则该位为1,差值继续往下比较,否则该位为0,跳过该位,直到精度满足要求为止 例:将(0.6785)10转换为二进制数 位权 差 位值 0.6785-0.5 =0.1785 … 1 0.1785<0.25 … 0 0.1785-0.125=0.0535 … 1 0.0535<0.0625 … 0 (0.6785)10=(0.1010…)2 2.2.3. 十进制纯小数转换为二进制数

  14. 2.2.4. 十进制带小数转换为二进制数 方法:整数部分“除2取余”,小数部分“乘2取整”,然后再进行组合。 例:将(86.625)10转换为二进制数 整数部分: (86)10 = (101011)2 小数部分: (0.625)10= (0.101)2 结果: (86.625)10= (101011.101)2

  15. 2.2.5. 二进制数与十六进制数的相互转换 (1).二进制数→十六进制数 4位二进制数代表一位十六进制数,在转换过程中:以小数点为界,4位二进制数为一组,不足4位用0补全,然后每组用等值的十六进制数表示。 (1001010.101)2 =(01001010.1010)2 =(4A.A)16 在汇编语言中,十六进制数用后缀“H”表示。所以,(322F)16应写成322FH。 (2).十六进制数→二进制数 把十六进制数的每一位用等值的4位二进制数来替换即可,如: (4F.8A)16 =(01001111.10001010)2 =( 1001111.1000101)2

  16. 2.3 带符号数的表示 2.3.1 机器数 2.3.2 原码、反码、补码和移码 2.3.3 定点数和浮点数

  17. 2.3.1 机器数 2.3.1.1.机器数和真值的概念 符号的数值化:把正负符号用一位二进制数码来表示。 符号位:符号数值化后占的若干个数值位。 机器数:数的符号用二进制数“0”或“1”来表示的,且符号位总是在该数的最高数值位之前的那种数。规定“0”表示正号,“1”表示负号。原码、补码、反码、移码等把符号位和数值位一起编码表示的数就是机器数。 真值:用“+”、“-”表示符号的那种数。 例: N1=+0.1011,N2=-0.1011,这是真值, 表示成机器数就为: [N1]原=0.1011,[N2]原=1.1011。

  18. 2.3.1.2 机器数的特点 ⑴用二进制数码表示,优点: ①使用元器件简单,便于硬件实现 ②运算简单 ③节省存储设备 ④便于用逻辑代数进行逻辑设计 ⑵机器数所表示的数值范围是有限的,无法表示时,便产生溢出 机器数所表示的数值范围是由机器的字长决定,字长越长,所能表示的数的范围越大。

  19. 2.3.1.2 机器数的特点 (3).字长为n位的机器,它所能表示的机器整数X除0以外,最小是1,最大是2n-1,即其所表示的范围是:1≤X≤2n-1 (4).对于不带符号位的定点纯小数(即小数点位于机器数的最左边的数),字长为n位的机器所能表示的机器数X的范围是:2-n ≤X≤1-2-n

  20. 2.3.1.3 符号的数值化表示 用0表示正(“+”)号,用1表示负(“-”)号。 以字长为8位为例, +1101101和 -1101101 这两个数的表示如图所示:

  21. 2.3.2 原码、反码、补码和移码 2.3.2.⒈原码 原码表示方法:符号位为0表示正数,为1表示负数,数值部分用二进制数的绝对值表示的方法。通常用[X]原表示X的原码。

  22. 0,x 2n>x≥ 0 [x]原= 2nx 0 ≥x> 2n x = 1110 2.3.2.⒈1. 整数的原码 x为真值 n为整数的位数 如 x = +1110 [x]原= 0 , 1110 用 逗号将符号位 和数值位隔开 [x]原= 24 + 1110 = 1 , 1110 带符号的绝对值表示

  23. x 1 >x≥ 0 [x]原= 1 – x 0 ≥x> 1 x = 0.1101 [x]原= 1 ( 0.1101) = 1 . 1101 x = 0.1000000 [x]原= 1 ( 0.1000000) = 1 . 1000000 2.3.2.⒈2. 小数的原码 x为真值 如 用 小数点将符号 位和数值位隔开 x = + 0.1101 [x]原= 0 . 1101 用 小数点将符号 位和数值位隔开 x =+ 0.1000000 [x]原= 0 . 1000000

  24. 2.3.2.1.3 原码表示特点 (1)优点:简单、直接 (2)缺点:原码做加法时,会出现以下问题: 能否只做加法?找到一个与负数等价的正数来代替这个负数,就可以使减法变加法

  25. 2.3.2.2 补码表示 2.3.2.2.1.补的概念 ①.时钟:以12为一个计数循环。 6-3(逆时针)  6+9 (顺时针) 可见模为12时-3可以用9代替 ②.角度:以360为一个计数循环 20-30  20+330 可见模为360时 -30和330是等价的 结论:1.一个负数加上 “模” 即得该负数的补 2.两个互为补数的数 它们绝对值之和即为 模 数

  26. 2.3.2.2.2. 补码的定义: 把某数X加上模数K,称为以K为模的X的补码。 [X]补=K+X 因此正数的补码是最高位为符号“0”,数值部分为该数本身;负数的补码是最高位为符号“1”,数值为用模数减去该数的绝对值。

  27. 0,x 2n>x≥ 0 [x]补= 2n+1 + x 0 >x≥ 2n(mod 2n+1) x = 1011000 [x]补= 27+1 +( 1011000 ) 1011000 整数补码 x为真值 n为整数的位数 如 x = +1010 [x]补= 0,1010 = 100000000 用 逗号将符号位 和数值位隔开 1,0101000

  28. x 1 >x≥ 0 [x]补= 2 + x0 >x≥ 1(mod 2) x = 0.1100000 [x]补= 2+( 0.1100000 ) 0.1100000 用 小数点将符号位 和数值位隔开 小数补码 x为真值 如 x = + 0.1110 [x]补= 0.1110 = 10.0000000 1.0100000

  29. 2.3.2.2.3. 补码的快速计算方法 ①.正数的补码与其原码相同 ②.负数补码方法1: 负数补码可用 “除原码除符号位外,每位取反,末位加 1 得到” 例:若X原=1.0101,求X补 尾数变反: 1.1010 末位加1: +1 X补= 1.1011

  30. ③.负数补码方法2 符号位不变,尾数倒序第一个1及之前的0不变,其余各位变反 例: 若X原=1.110100,求X补 X补=1.001100

  31. x = + 70 x = –70 x = 0.1110 x = 0.1110 x = 0.0000 x = 0.0000 x = 1.0000 x 1 >x≥ 0 [x]补= 2+ x 0>x≥–1(mod 2) [ 1]补= 2 + x = 10.0000 1.0000 = 1.0000 练习 求下列真值的补码 真值(字长8) [x]原[x]补 0, 1000110 = 1000110 0,1000110 = – 1000110 1, 0111010 1,1000110 0.1110 0.1110 1.0010 1.1110 0.0000 0.0000 0.0000 1.0000 1.0000 不能表示 由小数补码定义

  32. 2.3.2.3 反码表示 2.3.2.3.1 反码的定义: 正数的反码就是这个数本身,而负数的反码是符号位为1,数值部分等于其绝对值各位求反。

  33. 0,x 2n> x ≥ 0 [x]反= ( 2n+1 – 1) + x 0 ≥ x> 2n(mod 2n+1 1) x = 1101 [x]反= (24+1 1) 1101 = 11111 1101 用 逗号将符号位 和数值部分隔开 2.3.2.3.2 整数反码 x为真值 n为整数的位数 x= +1101 如 [x]反= 0,1101 = 1,0010

  34. x 1 > x ≥ 0 [x]反= ( 2 – 2-n) + x 0 ≥ x> 1(mod 2 2-n) x = 0.1010 [x]反= (2 2-4) 0.1010 = 1.1111 0.1010 用 小数点将符号位 和数值位隔开 2.3.2.3.3 小数反码 x为真值 如 x = +0.1101 [x]反= 0.1101 = 1.0101

  35. 最高位为符号位,书写上用“,”(整数) 或“.”(小数)将数值部分和符号位隔开 • 对于负数 ,符号位为 1 ,其 数值部分 原码除符号位外每位取反末位加 1 补码 原码除符号位外每位取反 反码 2.3.2.4 三种机器数的小结 • 对于正数,原码 = 补码 = 反码

  36. x = +21 大 x = –21 x = +31 大 x = –31 大 10101 + 100000 大 11111 + 100000 2.3.2.5 移码表示 补码表示很难直接判断其真值大小 十进制 二进制 补码 如 错 +10101 0,10101 – 10101 1,01011 +11111 0,11111 错 – 11111 1,00001 x + 25 +10101 + 100000 = 110101 正确 = 001011 +11111 + 100000 = 111111 正确 = 000001

  37. 0 2n 2n+1–1 [x]移码 真值 0 –2n 2n–1 2.3.2.5.1 移码的定义 [x]移= 2n + x(2n>x ≥ -2n) x为真值,n为 整数的位数 移码在数轴上的表示 如 x = 10100 [x]移= 25 + 10100 = 1,10100 用 逗号将符号位和数值位隔开 x = –10100 [x]移= 25– 10100 = 0,01100

  38. 2.3.2.5.2移码和补码的比较 设 x = +1100100 [x]移= 27 + 1100100 = 1,1100100 1 [x]补= 0,1100100 0 设 x = –1100100 [x]移= 27– 1100100 = 0,0011100 0 [x]补= 1,0011100 1 补码与移码只差一个符号位

  39. [x] 移对应的 十进制整数 [x] 补 [x] 移 真值 x ( n=5 ) - 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 - 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 0 1 1 - 1 1 1 1 0 1 0 0 0 1 0 0 0 0 0 1 0 2 … … … … - 0 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 31 ± 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 32 + 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 33 + 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 34 … … … … + 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 1 0 62 + 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 63 2.3.2.5.3. 真值、补码和移码的对照表 - 1 0 0 0 0 0 0 0 0 0 0 0 ± 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 + 1 1 1 1 1 1 1 1 1 1 1

  40. 2.3.2.5.4. 移码的性质 ① 最高一位为符号位,其取值与原码、补码都相反,“1”表示正号,“0”表示负号。移码常用于表示浮点数的阶码,通常只使用整数。 ② 对移码一般只执行加减运算,在对两个浮点数进行乘除运算时,是尾数实现乘除运算,阶码执行加减运算。对阶码执行加减运算时,需要对得到的结果加以修正,修正量为2n-1,即要对符号位的结果取反后,才得到移码形式的结果。 ③ 在移码的表示中,0有惟一的编码,即[0]移=1000…0,而且,机器零的形式为 000…000。即当浮点数的阶码≤-2n-1时,不管尾数值的大小如何,都属于浮点数下溢,被认为其值为0,这时,移码表示的阶码值正好是每一位都为0的形式,与补码的0完全一致。这有利于简化机器中的判零线路。

  41. 2.3.3 数的定点表示和浮点表示 根据小数点位置的不同,机器数有定点数和浮点数。 ① 定点数表示方式:小数点的位置是固定不变的数称为定点数。若约定小数点固定于机器数最低位的右边,则机器数表示整数;若约定小数点固定于机器数数值位的左边符号位的右边,则机器数表示纯小数。 ② 浮点数表示方式:浮点数是一种指数形式的表示方式,其一般表示式为:X=2r·x。其中,r称为X的阶码,它指明了小数点的位置,表示数的大小;x称为X的尾数,表明了X的有效值。

  42. 2.3.3.1 定点数表示法 通常把小数点固定在数值部分的最高位之前,或把小数点固定在数值部分的最后面。前者将数表示成纯小数,后者把数表示成整数。如图所示。 对纯小数进行运算时,要用适当的比例因子进行折算,以免产生溢出,或过多损失精度。

  43. 2.3.3.1 浮点数表示法 浮点数是指在数的表示中,其小数点的位置是浮动的。任一个二进制数N可以表示成: N=2E·M 式中,M为数N的尾数或数码,E为指数,是数N的阶码,是一个二进制整数 浮点数分为阶码和尾数两个部分。

  44. 2.3.3.2. 浮点表示法 E 浮点数真值:N = + R ×M 浮点数机器格式: EfE1…Em MfM1…Mn 阶符 阶码 数符 尾数 R:阶码底,隐含约定。 E:阶码,为定点整数,补码或移码表示。 其位数决定数值范围; 阶符表示数的大小。 M:尾数,为定点小数,原码或补码表示。 其位数决定数的精度; 数符表示数的正负。 尾数规格化:1/2≤ M <1 最高有效位绝对值为1

  45. 2.3.3.3 浮点数的规格化 浮点数通常采用规格化的表示方法。所谓浮点数的规格化就是其尾数小数点后的第一位要为1,若不为1,就要用“左规” 或“右规”的方法使其为1。左规就是尾数向左移动(同时调整阶码),右规为向右移动,直至尾数的第一位为1或阶码为全0或最小值。 如: 210×0.1101,-210×0.1101就是规格化的浮点数; 而 211×0.0110,-211×0.0110是非规格化的浮点数。 思考:为什么需要规格化?

  46. 例:把非规格化的浮点数 N=211×0.0110规格化 解:把浮点数N的尾数向左移一位(或尾数的小数点右移一位),变成0.1100,同时,阶码递减1,得到N=210×0.1100,就是规格化的浮点数。

  47. m m 2-1 2-1 -n 1-2 m -2 2.3.3.4. 浮点表示范围 阶符1位,阶码m位,补码表示,以2为底; 数符1位,尾数n位,补码表示,规格化。 阶码为最大数: 最小浮点数: 尾数为绝对值最大的负数: -1 阶码为最大数: 最大浮点数: 尾数为最大数: 阶码为最小数: 最小浮点正数: 尾数为最小正数: 2-1 例.某规格化浮点数用补码表示,其中阶码6位,含1位阶符;尾数10位,含1位数符。 表示范围: -231~ 231(1-2-9) 表示精度: 2-33

  48. 例1. 将 + 写成二进制定点数、浮点数及在定点机和浮点机中的机器数形式。其中数值部分均取 10 位,数符取1位,浮点数阶码取5位(含1位阶符)。 19 19 128 128 设x = + 练习: 解: 二进制形式 x = 0.0010011 定点表示 x = 0.0010011 000 浮点规格化形式 x = 0.1001100000×2- 10 定点机中 [x]原= [x]补= [x]反= 0.0010011000 浮点机中 [x]原= 1, 0010; 0. 1001100000 [x]补= 1, 1110; 0. 1001100000 [x]反= 1, 1101; 0. 1001100000

  49. 将 –58表示成二进制定点数和浮点数, 并写出它在定点机和浮点机中的三种机器数及阶码 为移码,尾数为补码的形式(其他要求同上例)。 例 2 解: 设x = –58 二进制形式 x = – 111010 x = – 111010 0000 定点表示 浮点规格化形式 x = – (0.1110100000) × 2110 定点机中 浮点机中 [x]原= 1, 0000111010 [x]原= 0, 0110; 1. 1110100000 [x]补= 1, 1111000110 [x]补= 0, 0110; 1. 0001100000 [x]反= 1, 1111000101 [x]反= 0, 0110; 1. 0001011111

  50. 2.3.3.5. 机器零 • 当浮点数 尾数为 0时,不论其阶码为何值,按机器零处理 • 当浮点数 阶码等于或小于它所表示的最小数时,不论尾数为何值,按机器零处理 如 m = 4 n = 10 当阶码和尾数都用补码表示时,机器零为 ×, × × × ×; 0. 0 0 …… 0 1, 0 0 0 0; ×.×× ……× (阶码 = -16) 当阶码用移码,尾数用补码表示时,机器零为 0, 0 0 0 0;0. 0 0 …… 0 有利于机器中“ 判 0 ” 电路的实现

More Related