第3章 计算机容易存储与处理的数据形式
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
o 用BCD(Binary coded Decimal)码表示
• 计算机中为什么要用十进制数表示数值?
– 日常使用的都是十进制数,所以,计算机外部都使用十进制数。在一 些有大量数据输入/出的系统中,为减少二进制数和十进制数之间的转 换,在计算机内部直接用十进制数表示数值。
数据的存储与排列顺序
• 比特(bit)是计算机中处理、存储、传输信息的最小单位
计算机系统平台
11
二、数的机器码表示
把带有“+”、“-”号的数据表示形式 称为真值。把符号数值化的数据表示形式 称为机器数; 表示机器数的常用的方法有三种,即原码、 反码和补码。 这三种机器数的表示形式中,符号部分的 规定是相同的,所不同的是数值部分的表 示形式。
计算机系统平台
12
数的机器码表示
• 为什么用补码表示带符号整数?
– 补码运算系统是模运算系统,加、减运算统一 – 数0的表示唯一,方便使用 – 比原码和反码多表示一个最小负数
4. 原码、反码和补码之间的转换
计算机系统平台
22
原码、反码和补码之间的转换
例: x1 = +1101
[x1]原= 01101 x2 = -1101
例如,若 int i = -65535,存放在内存100号单元(即占100#~103#),则用 “取数”指令访问100号单元取出 i 时,必须清楚 i 的4个字节是如何存放的。
例:X=+1011
X=-1011
[X]移=11011
[X]移=00101
计算机系统平台
20
各种数的编码
• 有三种定点编码方式
– 原码 现用来表示浮点(实)数的尾数
– 反码 现已不用于表示数值数据
– 补码 50年代以来,所有计算机都用补码来表示定点整数中带符号整数
– 移码 用来表示浮点数的“阶码”
➢ [+00…0]原=000…0 ➢ [-00…0]原=100…0
计算机系统平台
13
原码优缺点
优点:简单直观,容易变换 缺点:进行加、减运算较为复杂。首先要 比较两个数的符号,符号相同,则数值相 加;符号不同,则比较两数数值大小,由 数值大的数减去数值小的数,符号与数值 大的数相同。
计算机系统平台
[x2]补= 10011 x =(-13/64)10 = (-0.001101)2
[x]原=1.001101,[x]补=1.110011 [x]补=11011
[x]原=10101
计算机系统平台
23
C语言中数的表示
• 定点整数表示
– 无符号整数 – 有符号整数
Unsigned integer(无符号整数)
IA-32中的“字”有多少位?字长多少位呢?
16位
32位
DWORD :32位
QWORD:64位
程序中数据类型的宽度
• 高级语言支持多种类型、多种 长度的数据
– 例如,C语言中char类型的宽 度为1个字节,可表示一个字 符(非数值数据),也可表示 一个8位的整数(数值数据)
从表中看出:同类型数据并不是 所有机器都采用相同的宽度,分 配的字节数随机器字长和编译器 的不同而不同。
• 二进制信息的计量单位是“字节”(Byte),也称“位组”
–现代计算机中,(内存)存储器按字节编址
–字节是最小可寻址单位 (addressable unit )
–如果以字节为一个排列单位,则LSB表示最低有效字节, MSB表示最高有效字节
• 除比特和字节外,还经常使用“字”(word)作为单位
• “字”和 “字长”的概念不同
数值数据的表示
• 数值数据表示的三要素
– 进位计数制 – 定、浮点表示 – 如何用二进制编码 即:要确定一个数值数据的值必须先确定这三个要素。
例如,机器数 01011001的值是多少? 答案是:不知道! • 进位计数制
– 十进制、二进制、十六进制、八进制数及其相互转换
• 定/浮点表示(解决小数点问题)
[x1]反+[x2]反=100011
+)
1
00100
即:[x1+x2]反=00100,所以x1+x2=+0100
计算机系统平台
16
反码优缺点
优点:进行加法运算时比原码表示法简单; 缺点:当有符号位进位时,存在循环进位 的问题,即多执行一次加法。
计算机系统平台
17
3. 补码表示
符号部分同原码,数值部分与它的符号位有关:对于正 数,补码的数值位与原码相同;对于负数,补码的数值 位是将原码按位变反,再在最低位加1。
14
反码表示
符号位用0表示正数,用1表示负数。对于正数,反码 的数值与原码相同;对于负数,反码数值是将原码数 值按位取反
例:x1=+1011
x2=-1011
则:[x1]反=01011 [x2]反=10100
反码性质:
若x=+x1x2… xn-1 ,则[x]原=0x1x2… xn-1; 若x=-x1x2… xn-1 ,则[x]原=1x1x2… xn-1。 原码零有两种表示形式,当x=± 00…0时
定点整数进行表示。 定点整数:固定在机器数的最低位之后 定点小数:固定在符号位之后
计算机系统平台
5
计算机系统平台
6
计算机系统平台
7
2. 浮点格式
1)浮点数的表示方法
浮点表示法就是一个数的小数点的位置不固定,可以浮 动。
例如0.0000000000000101可表示成1.01×2–14任意进 制数 101000000000000可表示成 1.01×214
• 在计算机系统内部,所有信息都是用二进制 进行编码的,原因:
– 二进制只有两种基本状态,使用两个稳定状态的 物理器件就可以表示二进制数的每一位。
– 二进制的编码、计数和运算规则都很简单。 – 两个符号“1”和“0”正好与逻辑例题的“真”
和“假Fra Baidu bibliotek相对应。
文字、图、表、声音、 视频等各种媒体信息
最终用户角度
N 可以写成 N = M×RE, R=2
符号位 阶码E(定点整数) 尾数M(定点小数)
任意一个浮点数可用两个定点数来表示。
计算机系统平台
8
浮点数的范围
计算机系统平台
9
浮点数与定点数的关系
由浮点数的范围可知,浮点数X的绝对值:
浮点数的最小数是定点小数的最小数2-n除以一 个很大的数2(2m-1) ,最大数则是定点小数的最大 数(1-2-n)乘以这个大数2(2m-1) 。
• 例如:8位带符号数的表示范围为:
•
-128
~ +127
10000000 ~ 01111111
• C语言中对应short, int , long
浮点数的表示
• 由于用定点数无法表示大量带有小数点的实数,因此计算 机机中专门用浮点数来表示实数。
• C语言中float型(32位)
1位
8位
23位
• 其中尾数用原码表示,阶码用移码表示。(n位移码范围:
–如何根据一个字节地址取到一个32位的字?
• 字的存放问题
–一个字能否存放在任何字节边界?
• 字的边界对齐问题
字的存放问题
大端方式:最高有效字节存放在低地址单元中. 例. IBM 360/370, Motorola 68k, MIPS, Sparc, HP PA
小端方式: 最高有效字节存放在高地址单元中. 例. Intel 80x86, DEC VAX
➢ [+00…0]反=000…0 ➢ [-00…0]反=111…1
计算机系统平台
15
反码表示
反码性质:
用反码进行运算时,两数反码的和等于两数和 的反码;符号位也参加运算,当符号位产生进 位时,需要循环进位
例 已知x1=+1001,x2=-0101,求x1+x2
[解]
[x1]反=01001
+) [x2]反=11010
1. 原码表示
符号用代码0表示“+”,用代码1表示“-”,数值 部分以真值形式表示 。
例:x1=+1101
x2=-1101
则:[x1]原=01101 [x2]原=11101
2. 原码性质:
若x=+x1x2… xn-1 ,则[x]原=0x1x2… xn-1; 若x=-x1x2… xn-1 ,则[x]原=1x1x2… xn-1。 原码零有两种表示形式,当x=± 00…0时
• 一般在全部是正数运算且不出现负值结果的场合下,可使用无符 号数表示。例如,地址运算,编号表示,等等
• 无符号整数的编码中没有符号位 • 没有原码、反码、补码之分。 • 能表示的最大值大于位数相同的带符号整数的最大值(Why?)
– 例如,8位无符号整数最大是255(1111 1111) 而8位带符号整数最大为127(0111 1111)
– 定点整数、定点小数 – 浮点数(可用一个定点小数和一个定点整数来表示)
• 定点数的编码(解决正负号问题)
– 原码、补码、反码、移码 (反码很少用)
进位计数制
1.R进制转换成十进制数 2.十进制数转换成R进制 3.二、八、十六进制数的相互转换
计算机系统平台
4
定点与浮点表示
定点和浮点的出现是为了解决小数点的问题。 定点数:小数点固定的数,用来对定点小数和
➢ [+00…0]补=000…0 ➢ [-00…0]补=000…0(mod 2n)
计算机系统平台
18
补码表示
两数相加,不论两数的真值是正数还是负数,只 要先把它们表示成相应的补码形式,然后按二进 制规则相加(符号位也参加运算),其结果即为 两数和的补码。
例3.3 已知x1=+1110,x2=-0111,求x1+x2
C语言中数值数据类型的宽度 (单位:字节)
C声明
典型32位 机器
char
1
short
2
int
4
long
4
char*
4
Compaq Alpha 机器
1 2 4 8
8
float
4
4
double
8
8
Compaq Alpha是一个针对高端 应用的64位机器,即字长为64位
数据的存储和排列顺序
• 80年代开始,几乎所有机器都用字节编址 • ISA设计时要考虑的两个问题:
输入设备
输出设备
二进制编码表示的各种数据
数组、结构、字符串等结构化数据 描述
高级语言程序员角度
指令系统能识别 的基本类型数据
低级语言程序员和 硬件系统设计者角度
数值型数据
二进制数
二进制编码的 十进制数
整数(定点数)
实数(浮点数)
无符号整数
带符号整数
补码
非数值型数据
逻辑数据
编码字符 如:西文字符和汉字
因此浮点数的表示范围比定点数要大得多。
计算机系统平台
10
定点数的编码表示
将数的正/负号用0/1来表示称为符号数字 化。
为了解决数字化后的符号是否能一起参加 运算,就出现了各种编码方法。
编码方法主要有原码、反码、补码和移码 。
由于任意一个浮点数都可以用定点整数和 定点小数来表示,因此只考虑定点数的编 码方法。
-2n-1~(2n-1-1))。规格化尾数第一位总为1,因此在尾数 中缺省第一位的1.使得23位尾数表示了24位数字。
例:画出下述32位浮点数格式的表数范围。
01 89
31
S 阶码E
尾数M
第0位数符S;第1~8位为8位移码表示阶码E;第9~31位 为24位二进制原码小数表示的尾数M。规格化尾数的第一 位总是1,故规定第一位默认的“1”不明显表示出来。这 样可用23个数位表示24位尾数。
• C语言中double型(64位)
1位
11位
52位
• 其中尾数用原码表示,阶码用移码表示。规格化尾数第一 位总为1,因此在尾数中缺省第一位的1.使得52位尾数表 示了53位数字。
十进制数的表示
• 数值数据(numerical data)的两种表示
Decimal (十进制数)
o 用ASCII码表示
例:x1=+11010
x2=-11010
则:[x1]补=011010
[x2]补=100110
补码性质:
若x=+x1x2… xn-1 ,则[x]补=0x1x2… xn-1; 若x=-x1x2… xn-1 ,则[x]补=1x1x2… xn-1+1。 补码零有一种表示形式,当x=± 00…0时
[解]
[x1]补= 01110
+) [x2]补= 11001
[x1]补+[x2]补=[1]00111
丢弃
补码优点:可以简化 加法运算,只需一套 实现加法运算的线路
即[x1+x2]补=00111,所以x1+x2=00111
计算机系统平台
19
移码表示
移码(又叫增码)是符号位取反的补码,一般 用做浮点数的阶码。
• 总是整数,所以很多时候就简称为“无符号数” • C语言中对应unsigned short, unsigned int ,unsigned long
有符号整数
• 带符号整数也被称为有符号整数,它必须用一个二进制位 来表示符号。
• 现代计算机中都是有补码来表示有符号整数。
• n位带符号整数的表示范围为-2n-1~(2n-1-1)。
• 计算机中为什么要用十进制数表示数值?
– 日常使用的都是十进制数,所以,计算机外部都使用十进制数。在一 些有大量数据输入/出的系统中,为减少二进制数和十进制数之间的转 换,在计算机内部直接用十进制数表示数值。
数据的存储与排列顺序
• 比特(bit)是计算机中处理、存储、传输信息的最小单位
计算机系统平台
11
二、数的机器码表示
把带有“+”、“-”号的数据表示形式 称为真值。把符号数值化的数据表示形式 称为机器数; 表示机器数的常用的方法有三种,即原码、 反码和补码。 这三种机器数的表示形式中,符号部分的 规定是相同的,所不同的是数值部分的表 示形式。
计算机系统平台
12
数的机器码表示
• 为什么用补码表示带符号整数?
– 补码运算系统是模运算系统,加、减运算统一 – 数0的表示唯一,方便使用 – 比原码和反码多表示一个最小负数
4. 原码、反码和补码之间的转换
计算机系统平台
22
原码、反码和补码之间的转换
例: x1 = +1101
[x1]原= 01101 x2 = -1101
例如,若 int i = -65535,存放在内存100号单元(即占100#~103#),则用 “取数”指令访问100号单元取出 i 时,必须清楚 i 的4个字节是如何存放的。
例:X=+1011
X=-1011
[X]移=11011
[X]移=00101
计算机系统平台
20
各种数的编码
• 有三种定点编码方式
– 原码 现用来表示浮点(实)数的尾数
– 反码 现已不用于表示数值数据
– 补码 50年代以来,所有计算机都用补码来表示定点整数中带符号整数
– 移码 用来表示浮点数的“阶码”
➢ [+00…0]原=000…0 ➢ [-00…0]原=100…0
计算机系统平台
13
原码优缺点
优点:简单直观,容易变换 缺点:进行加、减运算较为复杂。首先要 比较两个数的符号,符号相同,则数值相 加;符号不同,则比较两数数值大小,由 数值大的数减去数值小的数,符号与数值 大的数相同。
计算机系统平台
[x2]补= 10011 x =(-13/64)10 = (-0.001101)2
[x]原=1.001101,[x]补=1.110011 [x]补=11011
[x]原=10101
计算机系统平台
23
C语言中数的表示
• 定点整数表示
– 无符号整数 – 有符号整数
Unsigned integer(无符号整数)
IA-32中的“字”有多少位?字长多少位呢?
16位
32位
DWORD :32位
QWORD:64位
程序中数据类型的宽度
• 高级语言支持多种类型、多种 长度的数据
– 例如,C语言中char类型的宽 度为1个字节,可表示一个字 符(非数值数据),也可表示 一个8位的整数(数值数据)
从表中看出:同类型数据并不是 所有机器都采用相同的宽度,分 配的字节数随机器字长和编译器 的不同而不同。
• 二进制信息的计量单位是“字节”(Byte),也称“位组”
–现代计算机中,(内存)存储器按字节编址
–字节是最小可寻址单位 (addressable unit )
–如果以字节为一个排列单位,则LSB表示最低有效字节, MSB表示最高有效字节
• 除比特和字节外,还经常使用“字”(word)作为单位
• “字”和 “字长”的概念不同
数值数据的表示
• 数值数据表示的三要素
– 进位计数制 – 定、浮点表示 – 如何用二进制编码 即:要确定一个数值数据的值必须先确定这三个要素。
例如,机器数 01011001的值是多少? 答案是:不知道! • 进位计数制
– 十进制、二进制、十六进制、八进制数及其相互转换
• 定/浮点表示(解决小数点问题)
[x1]反+[x2]反=100011
+)
1
00100
即:[x1+x2]反=00100,所以x1+x2=+0100
计算机系统平台
16
反码优缺点
优点:进行加法运算时比原码表示法简单; 缺点:当有符号位进位时,存在循环进位 的问题,即多执行一次加法。
计算机系统平台
17
3. 补码表示
符号部分同原码,数值部分与它的符号位有关:对于正 数,补码的数值位与原码相同;对于负数,补码的数值 位是将原码按位变反,再在最低位加1。
14
反码表示
符号位用0表示正数,用1表示负数。对于正数,反码 的数值与原码相同;对于负数,反码数值是将原码数 值按位取反
例:x1=+1011
x2=-1011
则:[x1]反=01011 [x2]反=10100
反码性质:
若x=+x1x2… xn-1 ,则[x]原=0x1x2… xn-1; 若x=-x1x2… xn-1 ,则[x]原=1x1x2… xn-1。 原码零有两种表示形式,当x=± 00…0时
定点整数进行表示。 定点整数:固定在机器数的最低位之后 定点小数:固定在符号位之后
计算机系统平台
5
计算机系统平台
6
计算机系统平台
7
2. 浮点格式
1)浮点数的表示方法
浮点表示法就是一个数的小数点的位置不固定,可以浮 动。
例如0.0000000000000101可表示成1.01×2–14任意进 制数 101000000000000可表示成 1.01×214
• 在计算机系统内部,所有信息都是用二进制 进行编码的,原因:
– 二进制只有两种基本状态,使用两个稳定状态的 物理器件就可以表示二进制数的每一位。
– 二进制的编码、计数和运算规则都很简单。 – 两个符号“1”和“0”正好与逻辑例题的“真”
和“假Fra Baidu bibliotek相对应。
文字、图、表、声音、 视频等各种媒体信息
最终用户角度
N 可以写成 N = M×RE, R=2
符号位 阶码E(定点整数) 尾数M(定点小数)
任意一个浮点数可用两个定点数来表示。
计算机系统平台
8
浮点数的范围
计算机系统平台
9
浮点数与定点数的关系
由浮点数的范围可知,浮点数X的绝对值:
浮点数的最小数是定点小数的最小数2-n除以一 个很大的数2(2m-1) ,最大数则是定点小数的最大 数(1-2-n)乘以这个大数2(2m-1) 。
• 例如:8位带符号数的表示范围为:
•
-128
~ +127
10000000 ~ 01111111
• C语言中对应short, int , long
浮点数的表示
• 由于用定点数无法表示大量带有小数点的实数,因此计算 机机中专门用浮点数来表示实数。
• C语言中float型(32位)
1位
8位
23位
• 其中尾数用原码表示,阶码用移码表示。(n位移码范围:
–如何根据一个字节地址取到一个32位的字?
• 字的存放问题
–一个字能否存放在任何字节边界?
• 字的边界对齐问题
字的存放问题
大端方式:最高有效字节存放在低地址单元中. 例. IBM 360/370, Motorola 68k, MIPS, Sparc, HP PA
小端方式: 最高有效字节存放在高地址单元中. 例. Intel 80x86, DEC VAX
➢ [+00…0]反=000…0 ➢ [-00…0]反=111…1
计算机系统平台
15
反码表示
反码性质:
用反码进行运算时,两数反码的和等于两数和 的反码;符号位也参加运算,当符号位产生进 位时,需要循环进位
例 已知x1=+1001,x2=-0101,求x1+x2
[解]
[x1]反=01001
+) [x2]反=11010
1. 原码表示
符号用代码0表示“+”,用代码1表示“-”,数值 部分以真值形式表示 。
例:x1=+1101
x2=-1101
则:[x1]原=01101 [x2]原=11101
2. 原码性质:
若x=+x1x2… xn-1 ,则[x]原=0x1x2… xn-1; 若x=-x1x2… xn-1 ,则[x]原=1x1x2… xn-1。 原码零有两种表示形式,当x=± 00…0时
• 一般在全部是正数运算且不出现负值结果的场合下,可使用无符 号数表示。例如,地址运算,编号表示,等等
• 无符号整数的编码中没有符号位 • 没有原码、反码、补码之分。 • 能表示的最大值大于位数相同的带符号整数的最大值(Why?)
– 例如,8位无符号整数最大是255(1111 1111) 而8位带符号整数最大为127(0111 1111)
– 定点整数、定点小数 – 浮点数(可用一个定点小数和一个定点整数来表示)
• 定点数的编码(解决正负号问题)
– 原码、补码、反码、移码 (反码很少用)
进位计数制
1.R进制转换成十进制数 2.十进制数转换成R进制 3.二、八、十六进制数的相互转换
计算机系统平台
4
定点与浮点表示
定点和浮点的出现是为了解决小数点的问题。 定点数:小数点固定的数,用来对定点小数和
➢ [+00…0]补=000…0 ➢ [-00…0]补=000…0(mod 2n)
计算机系统平台
18
补码表示
两数相加,不论两数的真值是正数还是负数,只 要先把它们表示成相应的补码形式,然后按二进 制规则相加(符号位也参加运算),其结果即为 两数和的补码。
例3.3 已知x1=+1110,x2=-0111,求x1+x2
C语言中数值数据类型的宽度 (单位:字节)
C声明
典型32位 机器
char
1
short
2
int
4
long
4
char*
4
Compaq Alpha 机器
1 2 4 8
8
float
4
4
double
8
8
Compaq Alpha是一个针对高端 应用的64位机器,即字长为64位
数据的存储和排列顺序
• 80年代开始,几乎所有机器都用字节编址 • ISA设计时要考虑的两个问题:
输入设备
输出设备
二进制编码表示的各种数据
数组、结构、字符串等结构化数据 描述
高级语言程序员角度
指令系统能识别 的基本类型数据
低级语言程序员和 硬件系统设计者角度
数值型数据
二进制数
二进制编码的 十进制数
整数(定点数)
实数(浮点数)
无符号整数
带符号整数
补码
非数值型数据
逻辑数据
编码字符 如:西文字符和汉字
因此浮点数的表示范围比定点数要大得多。
计算机系统平台
10
定点数的编码表示
将数的正/负号用0/1来表示称为符号数字 化。
为了解决数字化后的符号是否能一起参加 运算,就出现了各种编码方法。
编码方法主要有原码、反码、补码和移码 。
由于任意一个浮点数都可以用定点整数和 定点小数来表示,因此只考虑定点数的编 码方法。
-2n-1~(2n-1-1))。规格化尾数第一位总为1,因此在尾数 中缺省第一位的1.使得23位尾数表示了24位数字。
例:画出下述32位浮点数格式的表数范围。
01 89
31
S 阶码E
尾数M
第0位数符S;第1~8位为8位移码表示阶码E;第9~31位 为24位二进制原码小数表示的尾数M。规格化尾数的第一 位总是1,故规定第一位默认的“1”不明显表示出来。这 样可用23个数位表示24位尾数。
• C语言中double型(64位)
1位
11位
52位
• 其中尾数用原码表示,阶码用移码表示。规格化尾数第一 位总为1,因此在尾数中缺省第一位的1.使得52位尾数表 示了53位数字。
十进制数的表示
• 数值数据(numerical data)的两种表示
Decimal (十进制数)
o 用ASCII码表示
例:x1=+11010
x2=-11010
则:[x1]补=011010
[x2]补=100110
补码性质:
若x=+x1x2… xn-1 ,则[x]补=0x1x2… xn-1; 若x=-x1x2… xn-1 ,则[x]补=1x1x2… xn-1+1。 补码零有一种表示形式,当x=± 00…0时
[解]
[x1]补= 01110
+) [x2]补= 11001
[x1]补+[x2]补=[1]00111
丢弃
补码优点:可以简化 加法运算,只需一套 实现加法运算的线路
即[x1+x2]补=00111,所以x1+x2=00111
计算机系统平台
19
移码表示
移码(又叫增码)是符号位取反的补码,一般 用做浮点数的阶码。
• 总是整数,所以很多时候就简称为“无符号数” • C语言中对应unsigned short, unsigned int ,unsigned long
有符号整数
• 带符号整数也被称为有符号整数,它必须用一个二进制位 来表示符号。
• 现代计算机中都是有补码来表示有符号整数。
• n位带符号整数的表示范围为-2n-1~(2n-1-1)。