计算机中使用的数据可分为两大类:
- 数值数据:数字数据的表示(定点、浮点)
- 符号数据:非数字数据的表示(ASCII、汉字、图形等)
目录
一、定点表示法
所有数据的小数点位置固定不变,定点数据表示右两种方法:纯整数、纯小数
- 纯整数
为符号位(0正1负),其他为量值,小数点固定在最后一位之后,无需专用存放位
- 纯小数
为符号位,小数点固定在符号位之后,无需专用存放位
eg:x=0.0000...0 表示正0
x=1.0000...0 表示负0
x=0.1111...1 表示最大的小数
x=1.1111...1 表示最小的小数
二、浮点表示法
小数点随价码不同而浮动
格式: (R为基数,E为指数,M为纯小数)
浮点表示法:IEE754标准
指数用移码,尾数用原码
阶符S | 阶码E | 尾数M |
1位:31 | 8位:23-30 | 23位:0-22 |
规格化:
- 尾数最左位总是1,故这一位不予存储,而认为隐藏在小数点的左边
- 将浮点数的指数真值e变成阶码E时,应将指数e加上一个固定偏移值127,即E=e+127
浮点表示法:
三、十进制数串的表示
- 字符串形式(ASCII码) 非压缩
- BCD (8421码) 压缩
前分隔数字串
符号位单独使用一个字节表示(8位的ASCII码),位于数字串之前
正号 +:2B (16进制)
负号 - :2D (16进制)
十进制数+236用16进制表示为(2B 32 33 36) 2的ASCII码为32, 3的ASCII码为33以此类推
(0010 1101 0011 0010 0011 0011 0011 0110) 依次转换为二进制
BCD码(8421码)
正号 + :1100
负号 - :1101
+427 = 0100 0010 0111 1100 符号位
-427 = 0100 0010 0111 1101 符号位
原码表示法
真值 | 原码 |
+10010 | 0,10010 |
-10010 | 1,10010 |
+0.10101 | 0.10101 |
-0.10101 | 1.10101 |
补码表示法
正数的补码与原码相同,负数的补码是原码取反加一(符号位不变)
155 : 010011011 (原码) 010011011(补码) 最高位为符号位
-101 : 101100101 (原码) 110011011(补码)最高位为符号位
反码表示法
正数的反码与原码相同,负数反码是原码取反(符号位不变)
正数补码=原码=反码
负数补码=反码+1=原码取反+1
四、字符串表示方法
ASCII码
校验码
在有效信息中加入一些冗余信息(校验位),校验可以减少或避免出现数据错误。
(奇偶校验)
五、定点加法、减法运算
补码加法 [x+y]补 = [x]补 + [y]补
补码减法 [x-y]补 = [x]补 - [y]补
eg:x=-1011,y=+0111 x+y=?
[x]补=10101,[y]补=00111;
[x+y]补=[x]补+[y]补=10101+00111=11100
x+y = 10100=-0100
溢出检测
两正数相加,变负数称为上溢;两负数相加,变正数称为下溢
检测方法:双符号位法
符号位1 | 符号位2 | |
0 | 0 | 正确(正数) |
0 | 1 | 上溢 |
1 | 0 | 下溢 |
1 | 1 | 正确(负数) |
eg: x=+1100,y=+1000,求x+y=?
[x]补=001100 (前两位为符号位) [y]补=001000
[x+y]补=010100 (上溢)
x=-1100 ,y=-1000,求x+y=?
[x]补=110100,[y]补=111000
[x+y]补=101100 (下溢)
六、基本的加法器和减法器
- 半加器(HA)
不考虑低位进位的加法器
- 全加器(FA)
考虑低位进位及向高位进位的加法器
是低位的进位=0或1 是高位的进位
eg:
则有
定点运算器的组成
逻辑运算:与或非 异或
逻辑运算单元ALU
运算器基本结构: