当前位置:
文档之家› 第3章 计算机容易存储与处理的数据形式
第3章 计算机容易存储与处理的数据形式
[x1]反+[x2]反=100011
+)
1
00100
即:[x1+x2]反=00100,所以x1+x2=+0100
计算机系统平台
16
反码优缺点
优点:进行加法运算时比原码表示法简单; 缺点:当有符号位进位时,存在循环进位 的问题,即多执行一次加法。
计算机系统平台
17
3. 补码表示
符号部分同原码,数值部分与它的符号位有关:对于正 数,补码的数值位与原码相同;对于负数,补码的数值 位是将原码按位变反,再在最低位加1。
➢ [+00…0]原=000…0 ➢ [-00…0]原=100…0
计算机系统平台
13
原码优缺点
优点:简单直观,容易变换 缺点:进行加、减运算较为复杂。首先要 比较两个数的符号,符号相同,则数值相 加;符号不同,则比较两数数值大小,由 数值大的数减去数值小的数,符号与数值 大的数相同。
计算机系统平台
例:X=+1011
X=-1011
[X]移=11011
[X]移=00101
计算机系统平台
20
各种数的编码
• 有三种定点编码方式
– 原码 现用来表示浮点(实)数的尾数
– 反码 现已不用于表示数值数据
– 补码 50年代以来,所有计算机都用补码来表示定点整数中带符号整数
– 移码 用来表示浮点数的“阶码”
o 用BCD(Binary coded Decimal)码表示
• 计算机中为什么要用十进制数表示数值?
– 日常使用的都是十进制数,所以,计算机外部都使用十进制数。在一 些有大量数据输入/出的系统中,为减少二进制数和十进制数之间的转 换,在计算机内部直接用十进制数表示数值。
数据的存储与排列顺序
• 比特(bit)是计算机中处理、存储、传输信息的最小单位
• 例如:8位带符号数的表示范围为:
Hale Waihona Puke •-128~ +127
10000000 ~ 01111111
• C语言中对应short, int , long
浮点数的表示
• 由于用定点数无法表示大量带有小数点的实数,因此计算 机机中专门用浮点数来表示实数。
• C语言中float型(32位)
1位
8位
23位
• 其中尾数用原码表示,阶码用移码表示。(n位移码范围:
数值数据的表示
• 数值数据表示的三要素
– 进位计数制 – 定、浮点表示 – 如何用二进制编码 即:要确定一个数值数据的值必须先确定这三个要素。
例如,机器数 01011001的值是多少? 答案是:不知道! • 进位计数制
– 十进制、二进制、十六进制、八进制数及其相互转换
• 定/浮点表示(解决小数点问题)
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设计时要考虑的两个问题:
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时
计算机系统平台
11
二、数的机器码表示
把带有“+”、“-”号的数据表示形式 称为真值。把符号数值化的数据表示形式 称为机器数; 表示机器数的常用的方法有三种,即原码、 反码和补码。 这三种机器数的表示形式中,符号部分的 规定是相同的,所不同的是数值部分的表 示形式。
计算机系统平台
12
数的机器码表示
• C语言中double型(64位)
1位
11位
52位
• 其中尾数用原码表示,阶码用移码表示。规格化尾数第一 位总为1,因此在尾数中缺省第一位的1.使得52位尾数表 示了53位数字。
十进制数的表示
• 数值数据(numerical data)的两种表示
Decimal (十进制数)
o 用ASCII码表示
• 二进制信息的计量单位是“字节”(Byte),也称“位组”
–现代计算机中,(内存)存储器按字节编址
–字节是最小可寻址单位 (addressable unit )
–如果以字节为一个排列单位,则LSB表示最低有效字节, MSB表示最高有效字节
• 除比特和字节外,还经常使用“字”(word)作为单位
• “字”和 “字长”的概念不同
因此浮点数的表示范围比定点数要大得多。
计算机系统平台
10
定点数的编码表示
将数的正/负号用0/1来表示称为符号数字 化。
为了解决数字化后的符号是否能一起参加 运算,就出现了各种编码方法。
编码方法主要有原码、反码、补码和移码 。
由于任意一个浮点数都可以用定点整数和 定点小数来表示,因此只考虑定点数的编 码方法。
IA-32中的“字”有多少位?字长多少位呢?
16位
32位
DWORD :32位
QWORD:64位
程序中数据类型的宽度
• 高级语言支持多种类型、多种 长度的数据
– 例如,C语言中char类型的宽 度为1个字节,可表示一个字 符(非数值数据),也可表示 一个8位的整数(数值数据)
从表中看出:同类型数据并不是 所有机器都采用相同的宽度,分 配的字节数随机器字长和编译器 的不同而不同。
输入设备
输出设备
二进制编码表示的各种数据
数组、结构、字符串等结构化数据 描述
高级语言程序员角度
指令系统能识别 的基本类型数据
低级语言程序员和 硬件系统设计者角度
数值型数据
二进制数
二进制编码的 十进制数
整数(定点数)
实数(浮点数)
无符号整数
带符号整数
补码
非数值型数据
逻辑数据
编码字符 如:西文字符和汉字
例: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时
[x2]补= 10011 x =(-13/64)10 = (-0.001101)2
[x]原=1.001101,[x]补=1.110011 [x]补=11011
[x]原=10101
计算机系统平台
23
C语言中数的表示
• 定点整数表示
– 无符号整数 – 有符号整数
Unsigned integer(无符号整数)
例如,若 int i = -65535,存放在内存100号单元(即占100#~103#),则用 “取数”指令访问100号单元取出 i 时,必须清楚 i 的4个字节是如何存放的。
[解]
[x1]补= 01110
+) [x2]补= 11001
[x1]补+[x2]补=[1]00111
丢弃
补码优点:可以简化 加法运算,只需一套 实现加法运算的线路
即[x1+x2]补=00111,所以x1+x2=00111
计算机系统平台
19
移码表示
移码(又叫增码)是符号位取反的补码,一般 用做浮点数的阶码。
定点整数进行表示。 定点整数:固定在机器数的最低位之后 定点小数:固定在符号位之后
计算机系统平台
5
计算机系统平台
6
计算机系统平台
7
2. 浮点格式
1)浮点数的表示方法
浮点表示法就是一个数的小数点的位置不固定,可以浮 动。
例如0.0000000000000101可表示成1.01×2–14任意进 制数 101000000000000可表示成 1.01×214
–如何根据一个字节地址取到一个32位的字?
• 字的存放问题
–一个字能否存放在任何字节边界?
• 字的边界对齐问题
字的存放问题
大端方式:最高有效字节存放在低地址单元中. 例. IBM 360/370, Motorola 68k, MIPS, Sparc, HP PA
小端方式: 最高有效字节存放在高地址单元中. 例. Intel 80x86, DEC VAX
• 一般在全部是正数运算且不出现负值结果的场合下,可使用无符 号数表示。例如,地址运算,编号表示,等等
• 无符号整数的编码中没有符号位 • 没有原码、反码、补码之分。 • 能表示的最大值大于位数相同的带符号整数的最大值(Why?)
– 例如,8位无符号整数最大是255(1111 1111) 而8位带符号整数最大为127(0111 1111)
➢ [+00…0]反=000…0 ➢ [-00…0]反=111…1
计算机系统平台
15
反码表示
反码性质:
用反码进行运算时,两数反码的和等于两数和 的反码;符号位也参加运算,当符号位产生进 位时,需要循环进位
例 已知x1=+1001,x2=-0101,求x1+x2
[解]
[x1]反=01001
+) [x2]反=11010