- 计算机中的数值数据
- 无符号数与带符号数
- 原码表示法
- 反码表示法
- 补码表示法
- 三种码制比较
- 定点小数:Xs.X1X2……Xn
- 定点整数:XsX1X2……Xn (机器字长有n+1位)
- r为基数,通常r=2
- E为阶码,带符号整数,常用移码或补码表示
- M为尾数,带符号数小数,常用原码或补码表示
- 浮点数的底是隐含的,在整个机器数中不出现
- 阶码的符号位为es,阶码e的大小反映的在数N中小数点的实际位置
- 尾数的符号位为ms,它是整个浮点数的符号位,尾数m表示了该浮点数的精度
- 规格化浮点数:为了提高运算精度,需要充分利用尾数有效位。即规定尾数的最高数位必须是一个有效值。
- 在尾数用补码表示时,规格化浮点数应满足尾数最高数位与符号位不同
- [X]移=偏置值+X
- 偏置值=2n-1
- 最高位“0”表示负数,最高位“1”表示正数
- 移码为全0时,他所对应分真值最小,移码为全1时,对应真值最大
- 真值零在移码中表示形式唯一,1000 0000
- 移码把真值映射到一个正数域,所以可将移码视为无符号数,直接按无符号数规则比较大小
- 同一数值移码和补码除最高位相反外,其他各位相同
- 浮点数的阶码采用移码的原因,阶码大的其对应的真值就大,阶码小的其对应真值就小
- 简化机器中的判零电路。当阶码全为零(移码的各位均为 0 时,对应的阶码值最小),尾数也全为零,表示机器零
- 若字长相同,浮点数表示的范围远远大于定点数
- 浮点数精度降低,数轴上各点排列更稀疏
- 浮点运算比定点运算复杂
- 溢出处理:定点运算时,运算结果超出数的表示范围,发生溢出,但在浮点运算时,运算结果超出尾数的表示范围不一定溢出,阶码超出所能表示的范围时才产生溢出。
- 定点机:以定点运算为主,浮点运算通过软件来实现
- 定点机+浮点软件:浮点运算部件是专门用于对浮点数进行运算的部件
- 浮点机:具有浮点运算指令和基本的浮点运算器
- ASCII字符编码
- 字符串的存放
- 非压缩的十进制数串:一个字节存放一个十进制数或符号的ASCII-7码(一个字节=8位二进制数 1Byte=8bit)
- 压缩的十进制数串:一个字节可存放两位BCD码表示的十进制数,节省存储空间,便于直接进行十进制算术运算
- 无符号整数:
- 字节:0~255
- 字:0~65535
- 双字:0~2^32-1
- 四字:0~2^64-1
- 带符号整数
- 字节:-128~127
- 字:-32768~32767
- 双字:-2^31~2^31-1
- 四字:-2^63~2^63-1
- 浮点数
- 指针是主存单元的地址,IA-32结构定义了两种类型的指针:近指针(32位)和远指针(64位)
- 串数据:包括位串、字节串、字串和双字串。一个串可以包含从一个字节到4GB的内容。
- BCD数:IA-32结构中BCD码实际上是指8421码
- 结果一致,无差错,取出的数据位传送出去
- 检测到差错,可以纠正,数据位和纠错位一起送入纠正器,产生一组正确的k位数据位
- 检测到差错,无法纠正,报告出错
- 奇校验:整个校验码中“1”的个数为奇数
- 偶校验:整个校验码中“1”的个数为偶数
- 校验位形成
- 校验检测
- 在有效信息位中加入几个校验位形成海明码,使码距均匀拉大
- 将海明码每一个二进制位分配到几个奇偶校验组
- 当一位出错,会引起相关几个校验位的值发生变化,可以发现错误并指出错误位置
- S5~S1=00000 无错
- 有一位不为0 某一位校验位出错或三位汉明码出错(信息位2与校验位1)
- 有两位不为0:两位汉明码出错(无法确认出错位置)
- 三位不为0:一位信息位出错或三位校验码出错 可以指出并纠正错误(将该位变反)
- 四位或五位不为0:检查系统硬件正确性
- 将待编码的N位有效信息表示为多项式M(X)
- 将M(X)左移K位,得到M(X)×Xk,空出K位,拼装K位余数(校验位)
- 选取K+1位的产生多项式G(X),对M(X)×Xk模2除
- 将左移K位以后的有效信息与余数R(X)做模2加减,拼接为CRC码(N+K位)
- 将接收到的CRC码用约定的生成多项式去除
- 如果正确余数为0;某一位出错,余数不为0
- 不同位数出错,余数不同
总结
数值数据
无符号数
带符号数
原码
反码
补码
定点表示与浮点表示法
定点表示范围
浮点表示范围
非数值数据表示方法
ASCII-7码
十进制和数串的表示
BCD码
8421
2121
余3码
数据校验码
奇偶校验码
海明码
CNC码
无符号数和带符号数的表示方法
数的定点与浮点表示方法
字符和汉字编码方法
数据校验码
数值数据表示
数据:带符号数 无符号数
带符号数:原码 补码 反码
二进制数(B)
八进制数(Q)
十进制数(D)
十六进制数(H)
无符号数:整个机器字长全部二进制位均表示数值位,相当于数的绝对值
机器字长为n+1位的无符号数的表示范围0~2n+1-1
带符号数:正、负数
机器字长为n+1位的带符号数表示范围-2n+1~2n+1-1 8位(-128-127)
整数: 符号位 数值位.
小数: 符号位.数值位
正数 |
0|X| |
|
负数 |
1|X| |
|
特殊 |
|
0.0110 |
0.0110 |
|
-0.0110 |
1.0110 |
|
+0 |
00000 |
0110 |
0110 |
|
-0110 |
10110 |
|
-0 |
10000 |
|
|
|
|
|
|
+0 |
0.0000 |
|
|
|
|
|
|
-0 |
1.0000 |
正数 |
=原码 |
|
负数 |
1 |X|取反 |
|
特殊 |
|
0.0110 |
0.0110 |
|
-0.0110 |
1.1001 |
|
+0 |
00000 |
0110 |
00110 |
|
-0110 |
11001 |
|
-0 |
11111 |
|
|
|
|
|
|
+0 |
0.0000 |
|
|
|
|
|
|
-0 |
1.1111 |
正数 |
=原码 |
|
负数 |
1 |X|取反+1 |
|
特殊 |
|
0.0110 |
0.0110 |
|
-0.0110 |
1.1010 |
|
+0 |
00000 |
0110 |
00110 |
|
-0110 |
11010 |
|
-0 |
00000 |
|
|
|
|
|
|
+0 |
0.0000 |
|
|
|
|
|
|
-0 |
0.0000 |
原码和补码互换
X为负数的另一种方法:尾数第一个1及其右部的0保持不变,左部各位取反,符号位
保持不变。
[X]原=10111001100
[X]反=11000110100
补码和反码符号位可作为数值位的一部分看待,和数值位一起运算;但原码的符号位不允许和数值位一起运算,必须分开处理
机器数的定点表示与浮点表示--根据小数点的位置是否固定
定点表示法:所有小数点的位置固定不变
表示范围:X最大正数=1-2-n X最小正数=2-n
原码:-(1-2-n)~1-2-n
补码:-1~1-2-n
原码表示范围:-(2n-1)~2n-1
补码表示范围:-2n~2n-1
浮点表示法
浮点数:小数点的位置根据需要而浮动
N=M×rE
浮点数的表示范围
1/2<=|M|<1
|
真值 |
阶码(E) |
尾数(M) |
绝对值最大负数 |
|
01111 |
1.0000 |
绝对值最小负数 |
|
10000 |
1.1111 |
规格化绝对值最小负数 |
|
1000 |
1.0111 |
最大正数 |
|
01111 |
0.1111 |
最小正数 |
|
10000 |
0.0001 |
规格化最小正数 |
|
10000 |
0.1000 |
移码表示法
在真值X上加一个偏置值(常数),相当于X在数轴上向正方向平移了一段距离。
特点:
阶码采用移码的原因
定点、浮点表示法和定点、浮点计算机
定点、浮点表示法的区别
定点机与浮点机
非数值数据的表示
非数值数据即字符数据,即字符、字符串、图像符号和汉字等各种数据,不用来表示数值的大小
字符和字符串的表示
用七位二进制表示一个字符,包括十个二进制数字(0~9)、52个英文大写字母(A-Z,a-z)、34个专用符号,3个控制符号,共128个字符
计算机中通常一个字节存放一个字符
向量存放法:在存储器中占用一片连续的空间,每个字节存放一个字符代码,字符串的所有元素在物理上邻接。在每个字节中实际存放的是相应字符的ASCII码。
统一代码
Unicode:统一代码,可以容纳世界上所有文字和符号的字符编码方案。
Unicode基本方法:用一个16位的数来表示每个符号,可以表示65536个不同的字符或符号。被称为基本多语言平面(BMP),即UCS-2编码。
USC-4,可以表示100多万个自定义字符
十进制和数串的表示
十进制数的编码
用四位二进制数表示一位十进制数,称为二进制编码的十进制数,简称BCD码。
BCD码具有二进制的形式,保留了十进制数的特点
十进制 |
8421码 |
2421码 |
|
0 |
0000 |
0000 |
0011 |
1 |
0001 |
0001 |
0100 |
2 |
0010 |
0010 |
0101 |
3 |
0011 |
0011 |
0110 |
4 |
0100 |
0100 |
0111 |
5 |
0101 |
1011 |
1000 |
6 |
0110 |
1100 |
1001 |
7 |
0111 |
1101 |
1010 |
8 |
1000 |
1110 |
1011 |
9 |
1001 |
1111 |
1100 |
十进制数串
现代微机系统中数据表示举例
现代微机系统大多采用Intel系列微处理器,结构:IA-32结构
IA-32结构基本数据类型:字节(8位)、字(16位)、双字(32位)、四字(64位)、双四字(128位)
与IEEE 754标准所规定的格式直接对应
数据校验码:发现错误或自动改正错误的数据编码方式
首先通过函数f对数据进行计算产生一种代码(校验码),将原来数据(长k位)与校验码(长R位)一起存储
接着将数据(k位)读出,在这个k位中产生一组新的R位代码,与计算产生的代码比较:
奇偶校验码
可以检测出一位错误(或奇数位错误),但不能确定错误的位置,也不能检测出偶数位错误
规律:
校验位的取值(0或1)将使整个校验码中“1”的个数为奇数或偶数
简单奇偶校验
有效信息 |
奇校验码 |
偶校验码 |
0000 0000 |
10000 0000 |
00000 0000 |
0101 0100 |
00101 0100 |
10101 0100 |
偶校验:P=D7⊕D6⊕..⊕D1
奇校验:P=𝐷7⊕𝐷6⊕..⊕𝐷1
将一个字节的代码D7~D0写入主存时,同时将他们送入奇偶校验逻辑电路,该电路产生的“奇数、形成”信号就是校验位。与8位代码一起写入主存
将校验位与“奇形成”送入奇偶校验电路检测(异或),如果“奇校验出错”=0,则代码无错;若“奇校验出错”=1,则代码有错。出错位置不能确定(8位信息位与一位校验位)。
交叉奇偶校验
计算机在进行大量字节传送时,不仅每一个字节有一个奇偶校验位做横向校验,而且全部字节同一位也设置一个奇偶校验位做纵向校验,横向、纵向同时校验的方法称为交叉校验。可以发现两位同时出错。
海明校验码
原理:
1. 编码
校验位的位数K与信息位的位数N应满足:2k-1≥N+K−1
信息位一个字节为8位,因此K=5
故海明码位数:13位 H13H12..H1
校验位:P5P4..P1
校验位下标与海明码位号关系 Pi Hk k=2i-1 即P4=H8
P5已经是最高位了,只能在H13
P5 D8 D7 D6 D5 P4 D4D3 D2 P3 D1P2 P1
H13H12H11H10H9H8H7 H6H5 H4H3H2 H1
如何计算结果:
D8=H12
12=4+8
D7=H11
11=1+2+8
D6=H10
10=2+8
D5=H9
9=1+8
D4=H7
7=1+2+4
D3=H6
6=2+4
D2=H5
5=1+4
D1=H3
3=1+2
因此:P5=D8+D6+D5+D3+D2+D1 由于不同信息位出现次数不同,因此加上P5
P4=D8+D7+D6+D5
P3=D8+D4+D3+D2
P2=D7+D6+D4+D3+D1
P1=D7+D5+D4+D2+D1
2. 校验
S5=P5⊕D8⊕D6⊕D5⊕D3⊕D2⊕D1 即:前面是数据自带的校验码,后面是我们求校验码的步骤,如果相同则结果为0,证明无错
S4=P4⊕D8⊕D7⊕D6⊕D5
S3=P3⊕D8⊕D4⊕D3⊕D2
S2=P2⊕D7⊕D6⊕D4⊕D3⊕D1
S1=P1⊕D7⊕D5⊕D4⊕D2⊕D1
循环冗余校验码
CRC码
信息位为N位,校验位为K位,被称为(N+K,N)码
1.编码
2.检验与纠错
3.生成多项式的选择
-------------------------------- 作者在 2021-10-02 17:48:08 补充以下内容 --------------------------------
-120D = -01111000B(真值)
原码:11111000
反码:10000111
补码:10001000
移码:00001000
这样的移码也可以叫做偏移值为128的移码,也是标准移码,即10000000B+(-1111000B)=10000000B+(10001000B)=00001000B。这样移码就可以表示为原数的补码加上偏移值。在IEEE 754浮点数表示中移码是非标准的,它的偏移值为2k-1,也就是说对于单精度浮点数的偏移值为127。
-------------------------------- 作者在 2021-10-02 17:48:36 补充以下内容 --------------------------------
余三码(余3码)是由8421BCD码加上0011形成的一种无权码,由于它的每个字符编码比相应的8421码多3,故称为余三码。BCD码的一种。余3码的特点:当两个十进制数的和是9时,相应的余3码的和正好是15,于是可自动产生进位信号,而不需修正。0和9, 1和8,…..5和4的余3码互为反码,这在求对于模9的补码很方便。