29
微微微微微微微微微微微微微微微微 1 微微微微微微微微微 2 微微微微微微微微微 3 微微微微微微微 4 微微微微微微微

微型计算机中数的编码和字符的表示

Embed Size (px)

DESCRIPTION

微型计算机中数的编码和字符的表示. 1 数的表示与转换方法 2  带符号数的表示方法 3 定点数与浮点数 4  计算机中的编码. 1 数的表示与转换方法. ( 1 ) 进位制 :数值按不同的进位方法,常分为二进制 (B) 、八进制 (o) 、十进制 (D) 、十六进制 (H) 。 * 二进制:计算机中使用的计数制,只有 0 、 1 两个符号,逢 2 进 1 。 1100.101B=12.625D * 十六进制数 可认为是对二进制数的简化表现形式,它与二进制数有明显的对应关系。 - PowerPoint PPT Presentation

Citation preview

Page 1: 微型计算机中数的编码和字符的表示

微型计算机中数的编码和字符的表示

1 数的表示与转换方法2 带符号数的表示方法3 定点数与浮点数4 计算机中的编码

Page 2: 微型计算机中数的编码和字符的表示

1 数的表示与转换方法( 1) 进位制:数值按不同的进位方法,常分为二进制

(B) 、八进制 (o) 、十进制 (D) 、十六进制 (H) 。 * 二进制:计算机中使用的计数制,只有 0、 1两个符号,

逢 2进 1。 1100.101B=12.625D * 十六进制数 可认为是对二进制数的简化表现形式,它与二进制数

有明显的对应关系。 包含 0、 1…9、 A、 B、 C、 D、 E、 F 16 个符号,

逢十六进一

Page 3: 微型计算机中数的编码和字符的表示

1 数的表示与转换方法(2) 不同进位位数值的转换 二 \ 十六制 由于一个十六进制位正好由4位二进制数字构成: 0000 0001 0010…1001 1010 1011… 1110 1111 0 1 2 9 A B E F 0 1 2 9 10 11 14 15

所以在二\ 十六之间互相转换时,原则为: 二 到 十六, 以小数点为分界线,向左每4位一个组合转换

成一位十六进制数,不够的左边补0,而右边每4位一个组合转换成16进制,不够的右边补0。

11011•101 0001 1011 1010 1 B • A

Page 4: 微型计算机中数的编码和字符的表示

1 数的表示与转换方法十六 到 二

将每个十六进制位转为 4位二进制数即可。二 、十六 到 十 各位按权相加

Page 5: 微型计算机中数的编码和字符的表示

1 数的表示与转换方法十 到 二、十六整数部分转换(除 2取余)例 30D 转换为二进制即 30=11110B 低位 2 3 0 余 0 2 1 5 余 1 2 7 余 1 2 3 余 1 1 余 1 1 1 1 1 0

Page 6: 微型计算机中数的编码和字符的表示

1 数的表示与转换方法十 到 二、十六小数部分转换(乘 2取整)0.625D=0.101B 0.5 0.25 0.125 0.0625 0.03125

   

讨论 :浮点数的存储精度问题

Page 7: 微型计算机中数的编码和字符的表示

2  带符号数的表示方法

由于计算机只能识别 0和 1组成的数或代码,所以有符号数的符号也只能用 0 和 1 来表示,一般用 0 表示正,用 1表示负。由于数值部分的表示方法不同,有符号数可有三种表

示方法,分别叫做原码、反码和补码。

无符号数与带符号数

Page 8: 微型计算机中数的编码和字符的表示

2  带符号数的表示方法无符号数与带符号数

原码表示的有符号数 最高位为符号位,数值位部分就是该数的绝对值。 例如:假设某机器为 8位机,即一个数据用 8位(二进制)来表示,则:

+23 的原码为 00010111

-23 的原码为 10010111

其中最高位是符号位,后 7位是数值位。

原码表示的数字范围: -127 — +127

+0 原码 :0 0000000 -0 原码 :1 0000000

Page 9: 微型计算机中数的编码和字符的表示

2  带符号数的表示方法无符号数与带符号数

反码表示的有符号数 把最高位规定为符号位,数值部分对于正数是其绝对值,而对于负数则是其绝对值按位取反(即 1变 0, 0变1)得到的。例如: +23 的反码为 00010111 -23 的反码为   11101000反码表示的数字范围同原码。数字‘ 0’ 有 2个编码表示: (+0) 反 =00000000 (-0) 反 =11111111

Page 10: 微型计算机中数的编码和字符的表示

2  带符号数的表示方法无符号数与带符号数

补码表示的有符号数 正数的补码表示与原码、反码相同,负数的补码则是其绝对值的二进制值按位取反再在后末位加 1形成。 0的补码为 00000000例如: +23 的补码为   00010111 -23 的补码为 11101001

补码表示的数字范围: -128 — +127

负数补码最高位一定为 1

Page 11: 微型计算机中数的编码和字符的表示

例 1:求 -97 的原码、反码和补码。

解: -97

原码为 1 1100001

-97

反码为 1 0011110

-97

补码为 1 0011111

Page 12: 微型计算机中数的编码和字符的表示

例 2:已知 (X) 补 =11101110B ,求其原码和真值。

解: X为一负数,原码为数值部分求反加 1

(X) 原

= 1 0010010

真值

X = - 18

Page 13: 微型计算机中数的编码和字符的表示

补码运算:

      [X] 补 +[Y] 补 =[X+Y] 补

[X] 补 -[Y] 补 =[X-Y] 补 =[X] 补 +[-Y] 补

例 3:用补码表示形式计算 11-7= ?解: 11-7=4= 11+(-7)

(11) 补 = 0 0001011 (-7) 补 = 1 1111001

(11) 补 -(7) 补 = (11) 补 +(- 7) 补 = 1 0 0000100

=0 0000100

真值 = 4

Page 14: 微型计算机中数的编码和字符的表示

溢出与进位 :当运算结果超出数的表示范围时将产生溢出。

例 设字长为 8位,用补码进行计算( +120 ) +( +30 )

01111000 ………+120

00011110 ………+30

+________________________

10010110

-106 错误

Page 15: 微型计算机中数的编码和字符的表示

又例 设字长为 8位,计算 -5-16= ( -5 ) +( -16 )

11111011 ………-5

11110000 ………-16

+________________________

1 11101011 ……… -21

丢失进位

Page 16: 微型计算机中数的编码和字符的表示

关于负数原码、反码、补码问题的讨论

话题:已知负数的补码,求真值:一方面,负数求补码由原负数真值的绝对值求反加 1得到,那么由补码反求负数真值应该是补码减 1再求反得到另一方面,由补码反求负数真值,其绝对值一般仍采用其补码求反加 1得到。

二者矛盾吗?

Page 17: 微型计算机中数的编码和字符的表示

结论二者完全一致 ,例如 :求补码 10000000 与 11111111 的真值首先 ,最高位为 1,它是一个负数下面求其绝对值 :(1)10000000->01111111( 减 1)->10000000( 求反 )->128 11111111->11111110( 减 1)->00000001( 求反 )->1(2)10000000->01111111( 求反 )->10000000( 加 1)->128 11111111->00000000( 求反 )->00000001( 加 1)->1原因 :减 1后求反与求反后再加 1是等价的 :

设 A为表示补码的绝对值值部分A求反 +1=(255-A)+1=256-AA-1 求反 =255-(A-1)=256-A二者结果相同

Page 18: 微型计算机中数的编码和字符的表示

3  定点数与浮点数

1 .定点表示法2 .浮点表示法

Page 19: 微型计算机中数的编码和字符的表示

1 .定点表示法 所谓定点表示法,是指计算机中小数点位置是固定不变的。 根据小数点位置的固定方法不同,又可分为定点整数和定点小数表示法。前者小数点固定在数的最低位之后,后者小数点固定在数的最高位之前。设计算机的字长是8位,则上述两种表示法的格式如下:

Page 20: 微型计算机中数的编码和字符的表示

2 .浮点表示法 所谓浮点表示法,是指计算机中的小数点位置不是固定的,或者说是“浮动”的。为了说明它是怎样浮动的我们引入“阶码表示法”。对于任何一个二进制数N都可表示为:

N=2 ±b× ( ±k )尾数阶码

浮点数的表示形式:

X XX…XX X XX…XX

阶符 阶码 尾符 (数符 ) 尾码

例: -23x13

浮点表示形式: 0 11 1 1101阶符 阶码 尾符 尾码

Page 21: 微型计算机中数的编码和字符的表示

对 float,共 32 位, m=8, n=23若 E=0 ,且 M=0 ,则 N为 0。若 E=0 ,且 M≠0 ,则

若 1≤E≤254 ,则若 E=255 ,且 M≠0 ,则 N=NaN(‘非数值’)。若 E=255 ,且 M=0 ,则

IEEE 754标准

126( 1) *2 *0sN M

( 127)( 1) *2 *1s EN M

( 1) *sN

Page 22: 微型计算机中数的编码和字符的表示

转换 31.2 为 float. 首先要写成31.2=16*1.95 S=0 , E=127+4=131将 0.95 转为二进制0.1111 0011 0011 0011 001…结果为 0 10000011 1111001100110011001

例子

( 127)( 1) *2 *1s EN M

Page 23: 微型计算机中数的编码和字符的表示

4  计算机中的编码

1 .十进制数的编码— BCD 码2.字符的编码3.汉字的编码4. 基本数据类型

Page 24: 微型计算机中数的编码和字符的表示

1 .十进制数的编码— BCD 码

计算机中采用二进制,但二进制书写冗长,阅读不便,所以在输入输出时人们仍习惯使用十进制。如果计算量不大,可采用二进制数对每一位十进制数字进行编码的方法来表示一个十进制数,这种数叫做 BCD 码。由于在机内采用 BCD 码进行运算绕过了二进制、十进制间的复杂转化环节,从而节省了机器时间。

Page 25: 微型计算机中数的编码和字符的表示

1 .十进制数的编码— BCD 码 BCD 码有多种形式,最常用的是 8421BCD 码,它是用4位二进制数对十进制数的每一位进行编码,这 4 位二进制码的值就是被编码的一位十进制数的值。组合 BCD 码或压缩 BCD 码: 35D:0011 0101BCD非组合 BCD 码: 35D:00000011 00000101非法码:   1010 1011 1100 1101 1110 1111

Page 26: 微型计算机中数的编码和字符的表示

2 .字符的编码 在计算机中除了数值之外,还有一类非常重要的数据,那就是字符,如英文的大小写字母( A, B,C ,…, a, b, c,…),数字符号( 0 , 1 , 2 ,…, 9 )以及其他常用符号(如:?、=、 %、 +等)。在计算机中,这些符号都是用二进制编码的形式表示。 目前,一般都是采用美国标准信息交换码,它使用七位二进制编码来表示一个符号,通常把它称为ASCII码。由于用七位码来表示一个符号,故该编码方案中共有 128 个符号( 27=128 )。

Page 27: 微型计算机中数的编码和字符的表示

3 .汉字的编码 计算机要处理汉字信息,就必须首先解决汉字的表示问题。同英文字符一样,汉字的表示也只能采用二进制编码形式,目前使用比较普遍的是我国制定的汉字编码标准 GB2312-80 ,该标准共包含一、二级汉字 6763 个,其他符号 682 个,每个符号都是用 14 位(两个 7位)二进制数进行编码,通常叫做国标码。 如“啊”的国标码为 00110000 , 00100001 。新的国标汉字库已包括两万多个汉字和字符。 为了与 ASCII码区分 ,汉字在计算机中用机内码存储 , 在国标码基础上 , 加 8080H 得到 “啊”的机内码 10110000 10100001

Page 28: 微型计算机中数的编码和字符的表示

4. 基本数据类型

字节7 0

31 16 15 0高字 低字

63 32 31 0

高双字 低双字

127 64 63 0

高四字 低四字

双字

四字

双四字

高字节 低字节

15 8 7 0

Page 29: 微型计算机中数的编码和字符的表示

本节要求

二进制、十进制、十六进制数之间的转换BCD 码的表示方法记住一些常用的 ASCII码原码、反码、补码的真值计算