此为…方便个人的笔…记
浮点数表示:阶码 (移码)+ 尾数(原码)
1)——IEEE754标准
单精度:S + 8位偏指数E + 23位有效尾数M
双精度:S + 11位偏指数E + 52位有效尾数M
*指数采用偏移值,其中单精度偏移值为127,双精度为1023,将浮点数的阶码值变成非负整数,便于浮点数的比较和排序。
*对应的32为浮点数的真值可表示为:
**N =
(
−
1
)
S
(-1)^S
(−1)S ×
2
(
E
−
127
)
2^( E-127)
2(E−127) × 1.M
Q:IEEE754浮点数与对应真值之间的变换
e = E - 01111111(127)
还是用具体事例来看吧:
例:将十进制数20.59375转化成32位IEEE754格式浮点数的二进制格式。
解:
Step1 : 先将十进制数转化成二进制数:
20.59375 = 10100.10011
Step2 : 移动小数点,使其变成1.M的形式
10100.10011 = 1.010010011 ×
2
4
2^4
24
Step3:得到,
S = 0, e = 4, E = 100 + 01111111, M = 010010011
最后得到的32位浮点数的二进制存储格式为:
0100 0001 1010 0100 1100 0000 0000 0000
=41A4C000H
补充:十进制与二进制浮点数的转化!
2)数据校验的基本原理
——增加冗余码(校验位,增加码距),有效信息(k位)校验信息(r位)
①基本概念:同一编码中,任意两个合法编码之间不同二进制数位数的最小值。如:0011与0001的码距为1;0000、0011、0110、1001、1010、1100、1111等编码码距为2。(不同位的最小值)
②码距与检错或纠错能力的关系:
码距 ≥ e+1:可检测e个错误;
码距≥ 2t+1:可纠正t个错误;
码距≥ e+t+1: 可纠正t个错误,同时检测e个错误(e ≥ t)
3)奇偶检验
①基本原理——1.增加冗余码(检验码);2.编码:根据有效信息计算校验信息位,是检验码 (数据 + 1位检验信息)中的1的个数满足奇/偶检验的要求。
②奇偶检验的特点:编码与检错简单;编码效率高;不能检错偶数位错误,无错结论不可靠,是一种错误检测码;不能定位错误,因此不具备纠错能力。
③改进的奇偶检验(双向奇偶检验、方块检验、垂直水平检验)的特点:
可纠正1位错误;可检测出某行(列)上的奇数位;可检测出一部分偶数位错误;不能检测出错码分布在矩形4个顶点上的错误。
4)CRC校验及其实现(又称循环冗余校验)(这块貌似还需要补充)
N = k + r ≤
2
r
2^r
2r - 1
生成多项式G(x), G(x)应满足的条件:
A.最高位和最低位必须为1;
B.当被传送信息(CRC码)任何一位发生错误时,被生成多项式做除后应该使余数不为0;
C.不同位发生错误时,模2除运算后余数不同;
D.对不为0余数继续进行模2除运算应使余数循环。
CRC编码:有效信息 + “余数”(模2除法得到的余数)
补充:模2除运算:
a)加/减运算(异或运算,加不进位,剪不借位)
0 ± 0 = 0, 0 ± 1 = 1, 1 ± 0 = 1,1 ± 1 = 0;
b)模2除法
按模2减,求部分余数,不借位
c)上商原则
①部分余数首位为1时,商为1,减除数;
②部分余数首位为0时,商为0,减0;
③当部分余数的位数小于除数的位数时,该余数即为最后余数。
例如:
eee,先这么看着吧。
5)海明校验及其实现
N = k + r ≤
2
r
2^r
2r - 1
a.校验位位于
2
(
i
−
1
)
2^(i-1)
2(i−1)位,其余依次放置被校验的数据位。~~~
b.设置指错字G4G3G2G1
…
海明校验特点分析:
a.指错字G4G3G2G1 = 0000 不一定无错(利用奇偶校验的特点去判断)
b.指错字不一定能区别一位错与两位错!
(具体见mooc视频例子分析)
改进:
在海明校验的基础上增加一位奇偶校验位