计算机组成原理
第二章 数据的机器层次表示
1、数值数据的表示
十进制(D) 二进制(B) 八进制(Q) 十六进制(H)
1.1原码表示法:
纯小数:Xs.X1X2....Xn 正数Xs=0;负数Xs=1;数值部分保持不变
纯整数:XsX1X2....Xn 正数Xs=0;负数Xs=1;数值部分保持不变(,)
真值0:[+0]=00000;[-0]=10000;
1.2补码表示法
纯小数:Xs.X1X2....Xn 正数Xs=0;负数Xs=1;正数数值部分保持不变,负数数值部分按位取反,最低位+1;
纯整数:XsX1X2....Xn 正数Xs=0;负数Xs=1;正数数值部分保持不变,负数数值部分按位取反,最低位+1;
真值0:[+0]=[-0]=00000;
模:M=2*(n+1)(字长为2n+1)
比较:补码正、负不对称,多了一个(-2*n)或(-1)
1.3反码表示法
纯小数:Xs.X1X2....Xn 正数Xs=0;负数Xs=1;正数数值部分保持不变,负数数值部分按位取反;
纯整数:XsX1X2....Xn 正数Xs=0;负数Xs=1;正数数值部分保持不变,负数数值部分按位取反;
真值0:[+0]=00000;[-0]=11111;
1.4原码转换为反码
(1)符号位不变,数值部分全部取反,然后最低位+1;
(2)从低到高,尾数的第一个1以及其右边的0不变,符号位不变,其他取反
2.机器数的定点表示与浮点表示
2.1定点表示法
2.1.1定点小数:小数点的位置固定在最高有效位之前,符号数之后。小数点不占用二进制位。eg:Xs.X1X2X3..Xn
X(最大正数)=0.111111...=(1-2^-n)
X(最小正数)=0.00000...1=2^-n
X(绝对值最大负数原码表示)=1.1111....=-(1-2^-n)
X(绝对值最大负数属补码表示)=-1
总结:机器字长有N+1位时,原码定点小数范围为-(1-2^-n)~(1-2^-n);补码定点小数范围为-1~(1-2^-n)
2.1.2定点整数:小数点位置隐含固定在最低有效位之后。eg:XsX1X2....Xn[.]
X(最大正数)=011111.....=2^(n)-1
X(最小正数)=00000...1=1
X(绝对值最大负数原码表示)=11111...=1-2^n
X(绝对值最大负数补码表示)=111...=-2^n
总结:机器字长有N+1位时,原码定点小数范围为-(2^n-1)~(2^n-1);补码定点小数范围为-2^n~(2^n-1)
2.2浮点表示法
2.2.1浮点数的表示形式
{[Es|E][Ms|M]}
Es:长度为1,为阶码部分的符号位
E:长度为k,为阶码部分的数值部分
Ms:长度为1,为尾数部分的符号位
M:长度为n,为尾数部分的数值位
浮点数:N=M*r^E(r为浮点数阶码的底,一般为2,阶码的大小反映了小数点在浮点数中的实际位置)
X(最大正数)=011111...011111...=(1-2^-n)*2^(2^k-1)
X(最小正数)=10000...100.....1=2^-n*2^(-2^K)
X(绝对值最大负数)=011111...10000000...=-1*2^(2^k-1)[【不太明白为什么不分类]】
2.2.2规格化浮点数
规定尾数的最高数位必须是一个有效值。
规格化浮点数的尾数M的绝对值要求:1/r<=|M|<1;
(1)原码表示时,要求尾数的最高尾数为1.1/r<=|M|<1;
(2)补码表示时,要求尾数最高尾数与符号位不同并且1/r<=|M|<1;
(3)规格化的最小正数:0.100000=2^(-1)*2^(-2^k)
2.2.3移码表示法
移码:称为增码或偏码。移码就是在真值X上增加一个常数,这个常数被称为偏置值。相当于真值X在数轴上偏移了若干个单位。
表示为[X]移=偏置值+X。偏置值一般为2^n;对于机器字长为n+1来说
移码的特点:
1).最高位0表示负,1表示正。
2)真值0表示唯一。[+0]=[-0]=10000000。
3)移码可视为无符号数。
4)同一数值的移码和补码仅符号位相反。
2.2.4标准浮点数
1)分类:短浮点数、长浮点数、临时浮点数
2)短浮点数称为i单精度浮点数,长浮点数称为双精度浮点数。都采用隐含尾数最高数位的方法(为什么)。临时浮点数成为扩展精度浮点数,没有隐含位。
3)尾数用原码表示,阶码用移码表示。
4)短浮点数的尾数为23位(实际24),长浮点数为52位。
5)十进制与短浮点数格式之间的相互转换:
十进制变为二进制——规格化二进制——阶码由规格化二进制得来,计算阶码的移码——分别写出尾数符号位,阶码,尾数——对应的16进制转换
ps:记得隐含掉的“1”的问题。
2.3定点表示VS 浮点表示
1)数值的表示范围:浮点>定点
2)精度:浮点数降低了
3)数的运算:浮点变复杂了
4)溢出处理:定点更容易溢出
2.4定点机VS浮点机
1)定点机:以定点运算为主,浮点运算通过软件实现
2)定点机+浮点运算部件:微、小型计算机的配置
3)浮点机:具有浮点运算指令和基本浮点运算器。大、中型计算机。
3.非数值数据的表示
3.1字符串存放
1)向量法:物理位置必须相邻,实际存放的是ASCII值,不方便增删改查。
2)串表法:每个字符代码后面都有链接字,物理位置不必相邻。但是主存利用率不高。
3.2汉字的表示
1)汉字国标码:每个汉字、图形用两个字节,每个字节只用低7位进行编码。
2)汉字区位码:常用的6763分为94个区,每个区94个汉字(位)。区、位组成二维数组。区位码字长为4位,前两位为区号,后两位为位号。
国标码=区位码(16进制)+2020H
3)汉字机内码:两个字长的代码。汉字机内码=汉字国标码+8080H
4)汉字字形码:确定一个汉字字形点阵的代码(又称汉字字模码、汉字输入码)笔画所到之处为1,否则为0。点阵越密集,汉字质量越高。
3.3统一代码(unicode):
1)定义:有足够能力来表达任意一种语言使用的所有符号
2)编码方式:用一个16位数来表示unicode中每个符号。符号集被称为基本多语言平面(BMP)。
3)实现方式:unicode实现方式不同于编码方式。unicode编码确定,但是实现方式不同。
4.十进制数和数串的表示
4.1十进制编码:用4位二进制数来表示一位二进制数(称为BCD码)
ps:因为可以从16种代码中选出10种来,所以称为多种BCD编码。
4.1.18421码:称为NBCD码。其中1010~1111为非法码。
4.1.2 2421码:
1)位权从高到低一次为2421.
2)9的自补码:只要将自身按位取反,就能得到该数对9的自补2421码。
3)0101~1010为非法码。
4.1.3余3码:
1)无权码
2)9的自补码。
3)0000~0010、1101~1111为非法码。
4.1.4格雷码
1)无权码
2)相邻状态变化时,仅有一位二进制位不同。
3)循环特性。
4)6个代码(不确定)为非法码。
4.2十进制数
4.2.1非压缩的十进制数:一个字节可以存放一个十进制或者符号的ASCII码。
根据符号位所处位置,分为以下两类:
1)前分隔式数字串:符号位单独占用一个字节,放在数值位之前。数值存放用对应的ASCII值。符号位:正数_2BH,负数_2DH.
2)后嵌入式字符串:符号位不单独占用一个字节。,而是嵌入到数值最后一位。正数不变,符号最后一位加40H。
4.2.2压缩十进制数
一个字存放两位BCD码的二进制数。
符号位也占用半个字节,并存放在最低位后面。用CH表示正数。DH表示负数。
规定:数的个数+符号位之和必须为偶数。
当为奇数时,最高位补0H,即第一个字节高半位为0000.
5.不同类型的数据表示举例
1)无符号整数
2)带符号整数
3)浮点数
4)指针数据
5)串数据
6)BCD数
6.数据校验码
6.1基本概念:
数据校验码:那些能够发现错误或能够自动纠正错误的数据编码,又称之为“检错纠错编码”。
码距:任何一种编码都由许多码字构成,任意两个码字之间最少变化的二进制位数。
原理:待理解(!)
相关性:码距越大,检错能力越强,纠错能力《=检错能力。
6.2奇偶校验码
1)作用:能监测出一位或者奇数位的错误
2)组成:奇偶校验码(N+1位)=N位有效信息+1位校验位
3)分类:奇校验:整个校验码中1的个数为奇数。偶检验:整个校验码中1的个数为偶数。
6.3简单奇偶校验码
1)奇形成=1:D7~D0有偶数个1
2)奇形成=0:D7~D0有奇数个1(偶形成是奇形成取反)
3)奇校验出错:D校验与D7~D1异或整体取反(偶校验出错是奇校验出错取反)
6.4交叉奇偶校验(横纵校验)
可以发现两位同时出错
6.5海明校验码
发现一位出错,并能找到出错位置并自动纠错,发现两位错误编码
校验位的位数K和信息位的位数N应满足下列关系:2K-1 ≥N+K+1。
6.6循环冗余校验码(CRC码)
除法原理
K的求法(?)
求解步骤: