文章目录
0.计算机的五代变化
第一代为1946—1957年,电子管计算机:数据处理
第二代为1958—1964年,晶体管计算机:工业控制
第三代为1965—1971年,中小规模集成电路计算机:小型计算机
第四代为1972—1990年,大规模和超大规模集成电路计算机:微型计算机
第五代为1991年开始,巨大规模集成电路计算机:单片机。
1.非数值数据表示方法
字符表示法、汉字表示法
2. 数值数据表示法
2.1 计算机数值数据表示的特点
2.2 进位制数
二进制(异或门完成运算)
2.21 进制表示
N=
Σ
i
=
−
k
m
D
i
∗
r
i
\Sigma^m_{i=-k} D_i*r^i
Σi=−kmDi∗ri
D
i
D_i
Di 具体数码
r
r
r 进制数
i
i
i第几位,小数点左边第一位从0开始计数,右边第一位从-1开始
2.22 进制转换
注意:十进制转二进制的小数部分
小数部分乘2,整数部分是转化后的一位,再去掉整数部分继续乘二
进制转换简单运算方法
2 5 = 32 2^5=32 25=32 | 2 6 = 64 2^6=64 26=64 | 2 7 = 128 2^7=128 27=128 |
---|---|---|
2 10 = 1024 ( 1 K i l o ) 2^{10}=1024(1Kilo) 210=1024(1Kilo) | 2 11 = 2048 2^{11}=2048 211=2048 | 2 15 = 32768 2^{15}=32768 215=32768 |
2 16 = 65536 2^{16}=65536 216=65536 | 2 40 = 1 T e r a 2^{40}=1 Tera 240=1Tera | 2 50 = 1 P e t a 2^{50}=1 Peta 250=1Peta |
应用:
65539=
2
16
2^{16}
216+011=10000000000000011
111111110111=
2
12
2^{12}
212-1-
2
3
2^3
23
2.3 机器数/机器码
(1)真值 (书写用):符号用“+”、“-”表示的数据表示方法。机器不能识别书写格式
(2)机器数:将符号和数值一起编码表示的二进制数,0、1表示符号。
(3)4种机器码
- 原码 用来表示浮点(实)数的尾数
- 反码
- 补码 50年代开始成为整数标准
- 移码 用于浮点数的阶码
2.3.1 原码
最高位为符号位,0为正,1为负,原码中 数值位不变
[+0]原= 0.000…0
[-0]原 = 1.000…0
[0.1101]原 = 0.1101
[- 0.1101]原=1.1101
2.3.2 反码
正数的反码与原码****相同;负数的反码符号位为1,数值位是将原码的数值按位取反,就得到该数的反码表示 .
[+0]反=0.000…0
[-0]反=1.111…1
2.3.3 补码
- 正值直接取其原来的二进制码,符号位为0(与原码、反码相同) 正数的补码=反码=原码
- 负值则逐位取反,末位加1。符号位为1
- 一个负数的补码等于模 减 该负数的绝对值。
- 零有唯一的表示方式
[ + 0.0000 ] 补 = [ − 0.0000 ] 补 = 0.0000 [+0.0000]_补= [-0.0000]_补= 0.0000 [+0.0000]补=[−0.0000]补=0.0000
补码加减法
[ X + Y ] 补 = [ X ] 补 + [ Y ] 补 [X + Y]_补= [X]_补+ [Y]_补 [X+Y]补=[X]补+[Y]补
[ X − Y ] 补 = [ X + ( − Y ) ] 补 = [ X ] 补 + [ − Y ] 补 [X-Y]_补=[X+(-Y)]_补= [X]_补+ [-Y]_补 [X−Y]补=[X+(−Y)]补=[X]补+[−Y]补
2.3.4 移码
移码和补码数值部分相同,符号位相反
[
x
]
移
=
2
n
+
x
[x]_移=2^n+x
[x]移=2n+x
n为整数中不包含符号位的整数位数
设 x = + 1010110,则
[
x
]
移
=
2
7
+
1010110
=
11010110
[x]_移 = 2^7 + 1010110 = 11010110
[x]移=27+1010110=11010110;
设 x = -1010110,则
[
x
]
移
=
2
7
+
x
=
2
7
—
1010110
=
00101010
[x]_移= 2^7+x = 2^7 —1010110 = 00101010
[x]移=27+x=27—1010110=00101010
2.4 数的定点、浮点表示机器数
2.4.1 定点表示
- 定点整数
X
0
X
1
X
2
X
3
…
…
.
.
X
n
.
X_0 X_1X_2X_3……..X_n.
X0X1X2X3……..Xn. -----
X
0
X_0
X0 为符号位
取值范围: 0 = < ∣ X ∣ < = 2 n − 1 0=<|X|<=2^n-1 0=<∣X∣<=2n−1 - 定点小数
X
0
.
X
1
X
2
X
3
…
…
.
.
X
n
X_0. X_1X_2X_3……..X_n
X0.X1X2X3……..Xn
取值范围: 0 = < ∣ X ∣ < = 1 − 2 − n 0=<|X|<=1-2^{-n} 0=<∣X∣<=1−2−n
2.4.2 浮点表示
E
0
E_0
E0是阶码的符号
M
0
M_0
M0是整个数的符号
N
=
M
∗
(
2
E
)
N=M*(2^E)
N=M∗(2E) 可理解为科学计数法
M
1
M_1
M1为1,当转换为浮点表示时,小数部分表示为0.1…*
2
E
2^E
2E
- 机器字长一定时,阶码(E)越长,表示范围越大
- 阶码一定,尾码(M)越长,精度越高!
- 浮点数表示范围比定点数大,精度高
浮点数标准 IEEE754(※)
由于一般浮点的表示法则不利于软件的移植,因此有个浮点数标准
- 单精度(32)和双精度(64)的基本格式.
- 尾数(M)用原码,指数(E)用移码
数据格式
(1)基数R=2,基数固定,采用隐含方式来表示它。
(2)32位的浮点数:
-
S数的符号位,1位,在最高位,“0”表示正数,“1”表示负数。
-
M是尾数, 23位,采用原码表示.在低位部分,采用纯小数表示
-
E是阶码,8位,采用移码表示。
尾数域最左位(最高有效位)总是1, 故这一位经常不予存储,而认为隐藏在小数点的左边,即 1.M -
采用这种方式时,将浮点数的指数真值e变成阶码E时,应将指数e加上一个固定的偏移值。因为E是移码(8位),把e转为E时,127(01111111),即E=e+127。
-一个规格化的32位浮点数x的真值表示为
x = ( − 1 ) S ∗ ( 1. M ) ∗ 2 e x=(-1)^S*(1.M)*2^{e} x=(−1)S∗(1.M)∗2e
x = ( − 1 ) S ∗ ( 1. M ) ∗ 2 E − 127 x=(-1)^S*(1.M)*2^{E-127} x=(−1)S∗(1.M)∗2E−127
(3)64位的浮点数:符号位1位,阶码域11位,尾数域52位,指数偏移值是1023
规格化的64位浮点数x的真值为:
x
=
(
−
1
)
S
∗
(
1.
M
)
∗
2
E
−
1023
x=(-1)^S*(1.M)*2^{E-1023}
x=(−1)S∗(1.M)∗2E−1023
例1
若浮点数x的754标准存储格式为
(
41360000
)
16
(41360000)_{16}
(41360000)16,求其浮点数的十进制数值将存储模式转化为十进制数值,直接利用上述公式:
x
=
(
−
1
)
S
∗
(
1.
M
)
∗
2
E
−
127
x=(-1)^S*(1.M)*2^{E-127}
x=(−1)S∗(1.M)∗2E−127
求S,M,E
将十六进制转化为二进制
0 100 0001 0011 0110 0000 0000 0000 0000
粗体为符号位
高亮8位是E
剩下23位是M
1.M=1.011 011
E-127=100 0001 0-127=3
S=0
因此,
x
=
(
−
1
)
0
∗
(
1.011011
)
∗
2
3
x=(-1)^0 * (1.011011)*2^3
x=(−1)0∗(1.011011)∗23
=
1011.011
=1011.011
=1011.011=11.375
例2:
将数
(
20.59375
)
10
(20.59375)_{10}
(20.59375)10转换成754标准的32位浮点数的二进制存储格式。
解:首先分别将整数和分数部分转换成二进制数:
20.59375=10100.10011
与
x
=
(
−
1
)
S
∗
(
1.
M
)
∗
2
E
−
127
x=(-1)^S*(1.M)*2^{E-127}
x=(−1)S∗(1.M)∗2E−127对照
然后移动小数点,使其在第1,2位之间 数值上,不看符号,1.M*
2
E
−
127
2^{E-127}
2E−127
10100.10011
=
1.010010011
×
2
4
10100.10011=1.010010011×2^4
10100.10011=1.010010011×24
e=E-127=4于是得到:
S=0, E=4+127=131, M=010010011
最后得到32位浮点数的二进制存储格式为:
0100 0001 1010 0100 1100 000000000000=(41A4C000)16
3. 数据信息的检验
解决编码在时间、空间上传输可靠性问题
奇偶信息的校验
海明校验
CRC 循环冗余校验
奇偶信息的校验
基本原理: 增加冗余码(校验位),根据有效信息计算校验信息位,使校验码(数据+ 1位校验信息)中1的个数满足奇/偶校验的要求
也就是增加一个校验位为0,使得这个码中1的个数为偶数(偶校验)
增加一个校验位为1,使得这个码中1的个数为奇数(奇校验)
校验码=数据+校验位
校验码(数据+校验位)中1的个数为奇数
0000 --> 00001 (奇校验)
0001 --> 00011 (偶校验)
偶校验: 逐位异或运算
奇校验: 逐位异或运算后取反
结果为0则表示正常偶校验: 逐位异或运算
奇偶校验特点
仅能识别奇数个错误,不能检测偶数个错误。不能纠正错误,也不能保证正确
实现简单,编码效率高
注:纠正错误的前提是定位错位,而奇偶校验无法定位
4.补充
4.1 模
模,指一个计量系统的计数范围
如:时钟的计量范围是0~11,模=12
在计算机中,机器数表示数据的字长即位数是固定的。其模数的大小: 1)对于n位整数(含一位符号位),则它的模数为2的 n次方 , 2)对于纯小数(含符号位),则它的模数总是2。
某一台计算机的字长为8位,则它所能表示的二进制数为00000000~11111111,共 256个,则 模数为2的8次方
4.2 BCD码
8421: (4个一组,代表一个数)
x
=
(
8
∗
X
3
+
4
∗
X
2
+
2
∗
X
1
+
1
∗
X
0
)
x=(8*X_3+4*X_2+2*X_1+1*X_0)
x=(8∗X3+4∗X2+2∗X1+1∗X0)
例如
10100
1
(
B
C
D
)
101001_{(BCD)}
101001(BCD)=0010_1001=2_9=29