复习,,预习!!
注:本章内容不作考试重点,只罗列部分知识点及相关概念,具体重点和知识点以课本为主。
二.数据的机器级表示
1.R进制数与十进制数的转换
①R进制转十进制:按权展开
例:
②十进制数转R进制数
③二、八、十六进制数相互转换
2.定点数与浮点数
定点表示:表示定点小数和定点整数。
对于定点小数:小数点固定在数的最左边,一般用来表示浮点数的尾数部分
对于定点整数:小数点固定在数的最右边,因此可以用定点整数来表示整数
定点数的编码表示:(原码、补码、反码、移码)
原码:最高位是符号位(正数0,负数1),数值部分用真值的绝对值表示
补码:正数的补码等于其本身,负数的补码等于反码+1
补码的来源------模运算
一个负数的补码等于模数减去该负数的绝对值,当X<0时,[X]=M-|X|=M+X,(这里的M表示模数,[X]表示对X求补码)。
对于某一个确定的模,减去一个数,等于加上负数的补码,这使得计算机中的加减法得到统一,可以对比模12的时钟,eg. -8=4(mod12)相当于减8等于加4。
求补码的规律,根据上面的公式可以推出来,无论X的正负,-X的补码恰好是X按位取反再加一。比如8位数X=10000001(补码) -X=01111110+1=01111111
反码:正数的反码等于其本身,负数的反码等于原码除符号按位求反,也就是补码-1;
移码:补码符号位取反,用于表示浮点数的阶码
例:
x=+0.1011, x[原]=0.1011,x[补]=0.1011,x[反]=0.1011
x=-0.1011, x[原]=1.1011,x[补]=1.0101,x[反]=1.0100
x=+1011,x[原]=01011,x[补]=01011,x[反]=01011,x[移]=11011
x=-1011,x[原]=11011,x[补]=10101,x[反]=10100,x[移]=00101
浮点表示:对于任何一个二进制数X,可以表示成如下形式
S:取值为0或1,决定X的符号
M: 一个二进制定点小数,称为X的尾数
E:一个二进制定点整数,成为X的阶数(指数)
R:基数,可以取值为2、4、16等
在R一定的情况下,尾数M的位数反应X的有效位数,
浮点数取值范围(m为指数的位数,n为尾数的位数,基数为2)
对于浮点数不明白的同学可以看下面的博客
浮点数的表示 —— 基本格式、规格化、表示范围_规格化浮点数_starter_zheng的博客-CSDN博客
注意考试重点:IEEE-754单精度、双精度浮点数格式,能够根据给出的真实值能求出IEEE格式的浮点数
3.数据校验码
码距:同一编码中,任意两个合法编码之间不同二进制数位数的最小值
码距与检错或纠错能力之间的关系:
码距>=e+1; 可检测e个错误
码距>=2t+1; 可纠正t个错误
码距>=e+t+1: 可纠正t个错误,同时检测e个错误(e>=t>=1)
①奇偶校验码
奇校验:原始码流+校验位 总共有奇数个1
偶校验:原始码流+校验位 总共有偶数个1
特点:它的校验位只有一位,要么是0,要么是1。并且它的校验码还可以放在码流的前面。
②海明校验码
以下内容转载自:http://www.cnblogs.com/scrutable/p/6052127.html
海明码(也叫汉明码)具有一位纠错能力。本文以1010110这个二进制数为例解释海明码的编码和校验方法。
编码
确定校验码的位数x
设数据有n位,校验码有x位。则校验码一共有2x种取值方式。其中需要一种取值方式表示数据正确,剩下2x-1种取值方式表示有一位数据出错。因为编码后的二进制串有n+x位,因此x应该满足
2^x-1 ≥ n+x
使不等式成立的x的最小值就是校验码的位数。在本例中,n=7,解得x=4。
确定校验码的位置
校验码在二进制串中的位置为2的整数幂。剩下的位置为数据。如图所示。
位置 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
内容 | x1 | x2 | 1 | x3 | 0 | 1 | 0 | x4 | 1 | 1 | 0 |
求出校验位的值
以求x2的值为例。为了直观,将表格中的位置用二进制表示。
位置 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 |
内容 | x1 | x2 | 1 | x3 | 0 | 1 | 0 | x4 | 1 | 1 | 0 |
为了求出x2,要使所有位置的第二位是1的数据(即形如**1*的位置的数据)的异或值为0。即x2^1^1^0^1^0 = 0。因此x2 = 1。
同理可得x1 = 0, x3 = 1, x4 = 0。
位置 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 |
内容 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
因此1010110的海明码为01110100110。
校验
假设位置为1011的数据由0变成了1,校验过程为:
将所有位置形如***1, **1*, *1**, 1***的数据分别异或。
***1: 0^1^0^0^1^1 = 1
**1*: 1^1^1^0^1^1 = 1
*1**: 1^0^1^0 = 0
1***: 0^1^1^1 = 1
以上四组中,如果一组异或值为1,说明该组中有数据出错了。***1 **1* 1***的异或都为1,说明出错数据的位置为1011。
③循环冗余校验码
循环冗余校验码广泛应用于数据通信领域和磁介质的存储系统中,它利用生成多项式为k个数据位产生r个校验位来进行编码,其编码长度为k+r。CRC的代码格式如下:
循环冗余校验码有两部分组成:数据为、校验位。若数据位占k位,则校验位占n-k位。n为CRC码的字长。检验码越长校验能力就会越强。在CRC编码是,采用的是模2运算,模2运算加减运算的规则是按位运算,不发生借位和进位。