5、数的编码方式

  • 带符号数有以下列编码方式
  • 源码:1个数的正常二级制表示,最高位表示符号,数值0的源码有2种形式:+0(0 0000000)和-0(1 0000000)
  • 反码:正数的反码即原码;负数的反码是在原码的基础上,除符号位外,其它各位按位取反。数值0的反码也有两种形式:+0(0 0000000)和-0(1 1111111)
  • 补码:正数的补码即原码;负数的补码是在原码的基础上,除符号位外,其他各位按位取反,而后未位+1,若有进位产生进位。因此数值0的补码只有一种形式+0=-0=0 0000000
  • 移码:用作浮点数运算的阶码,无论正数负数,都是将该原码补码的首位(符号位)取反得到移码。
  • 机器字长位n时各种码制表示的带符号数的取值范围(差别在于0的表示,码和反码分+0和-0,补码只有1个0,因此可以多表示1个。)
码制定点整数定点小数
原码-(2n-1) ~ +(2n-1-1)-(1-2-(n-1)) ~ +(1-2-(n-1))
反码-(2n-1) ~ +(2n-1-1)-(1-2-(n-1)) ~ +(1-2-(n-1))
补码-2n-1 ~ +(2n-1-1)-1 ~ +(1-2-(n-1))
移码-2n-1 ~ +(2n-1-1)-1 ~ +(1-2-(n-1))

1、浮点数表示

  • 浮点数:表示方法位N=F*2E,其中E称为阶码,F称为尾数;类似于十进制的科学计算法,如85.125=0.85125*102,二进制如101.011=0.101011*23
  • 在浮点数的表示中,阶码位带符号的纯整数,位数位带符号的纯小数,要注意符号占最高位(正数0,负数1),其表示各式如下:
阶符阶码数符尾数
  • 与科学计算法类似,1个浮点数的表示方法不是唯一的,浮点数所能表示的数值范围由阶码确定,所表示的数值精度由位数确定
  • 尾数的表示采用规格化方法,即带符号尾数的补码必须位1.0xxxxx(负数)或者0.0xxxxx(正数),其中x可为1或1
  • 对阶(使两个数据的阶码相同,小阶向大阶看齐,较小阶码增加几位,尾数就右移几位)
  • 尾数计算(相加,若是减运算,则加负数)
  • 结果规格化(即尾数表示规格化,带符号尾数转换为1.0xxxxx(负数)或者0.0xxxxx(正数)

例题:浮点数在机器中的表示如下所示,若阶码的长度为e,尾数的长度为m,则以下关于浮点数的表示的叙述中,正确的是()

① e的值影响浮点的范围,e越大,所表示的浮点数数值范围越大

② e的值影响浮点的精度,e越大,所表示的浮点数数值范围越高

③ m的值影响浮点数的范围,m越大,所表示的浮点数范围越大

④ m的值影响浮点数的精度,m越大,所表示的浮点数范围越高

A.①③ B.②③ C.①④ D.②④

2、算术运算和逻辑运算

数与数之间的算术运算包括:加、减、乘、除等基本算术运算,对于二进制,还应该掌握基本逻辑运算

逻辑名称逻辑内容
逻辑与(&)0和1相与,只要有1个为0结果为0,两个都是1才是1。
逻辑或(|)0和1相与,只要有1个位1结果就为1,两个都是0才是0。
异或同0非1。即参加运算的二进制数同为0或者同为1结果为0;1个为0另外1个为1结果为1。
逻辑非(!)0的非是1,1的非是0
逻辑左移(<<)二进制整数左移n位,高位若溢出则舍去,低位补0。
逻辑右移(>>)二进制整数右移n位,低位若溢出则舍去,高位补0。

3、校验码

  • 码距:单个编码A:00而言,起码据为1;因为其只需要改变1位编程另外1个编码。在2个编码中,从A码到B码转换需要改变位数的称为码距。码距越大,越利于纠错和检错
  • 奇偶校验码:在编码中增加1位校验位来使编码中的1个数位奇数(奇校验)或者偶数(偶校验),从而使码距变为2
  • 奇校验:编码中,含有奇数个1,发送给接收方,接收方收到后,会计算收到的编码有多少个1,如果是奇数个,则无误,如果是偶数个,则有误
  • 偶校验同理,只是编码中偶数个1,由上述,奇偶只能校验1位错,并且无法纠错。

4、循环冗余校验码CRC

  • CRC只能检错,不能纠错,其原理是找出1个能整除多项式的编码,因此首先要将原始报文除以多项式,将所得的余数作为校验位加载原始报之后,作为发送数据发给接收方,其编码格式为:
  • 因此,CRC由2部分组成,左边为信息码(原始数据),右边为校验码。校验码是由信息码产生的,校验码位数越长,校验能力越强。求CRC编码时,采用的是模2运算(按位运算,不发生错位和进位)

例题:原始报文为“11001010101”,其生成多项式为:x4+x3+x+1。对其进行CRC编码后的结果为?

解答:首先根据多项式得出除数11011,在原始多项式后面加上多项式最高指数个数个0,即4个0和除数进行摸2除法,一直上1,最终得出四位余数为0011,编码为11001010101 0011,然后发生出去。

接收方将受到的110010101010011与多项式进行摸2运算,若余数为0,说明校验正确,数据传输正确。

5、海明码校验码

  • 海明码:本质也是利用奇偶性来检错和纠错的校验方法,构成方法是数据位之间的确定位置插入k个校验位,通过扩大码距实现检错和纠错。
  • 设数据位是n位,校验位是k位,则n和k必须满足以下关系:2k-1>=n+k

例题:求信息1011的海明码

(1)校验位的位数和具体的数据位的位数之间的关系:所有位都编号,从最低位编号,从1开始递增,校验位处于2的n(n= 0 1 2 .....)次方中,即处于第1,2,4,8,16......位上,其余位才能填充真正的数据位,若信息数据位1011,则可知,第1,2,4位为校验位,第3,5,6,7位为数据位,用来从低位开始存放1011

7654321位数
I4I3I2I1信息位
r2r1r0校验位

(2)每一位校验码的计算公式:需要确定每1位校验码到底校验哪些信息位,将信息位(即编号)拆分为二进制表示,如7=4+2+1,由第4位校验位(r2)和第二位校验位(r1)和第1位(r0)共同校验。同理,第6位数据位6=4+2,第5位校验位5=4+1,第3位数据位3=2+1,前面可知,这些2的n次方都是校验位,可知第4位校验码校验第7 6 5三位数据位,因此,第4位校验位r2等于这三位数据位的值异或,第2位和第1位校验位计算原来同上,计算出3个校验位后,知道最终要发送的海明码校验码位1010101

7654321位数
1011信息位
001校验位

(3)检错和纠错原理

接收方收到海明码之后,会将每一位校验码与其校验的位数分别异或,即如下三组运算

如果是偶校验,那么运算得到的结果应该全部都是0,如果是奇校验,应该都是1,才是正确,假设是偶校验,且接收到的数据位1011101(第四位出错),此时,运算的结果为:

这里不都是0,编码传输的过程是错误的,并且按照r2r1r0排位列为二进制100,这里指出的就是错误的位数,表示第100,即第4位出错,找到了出错位,纠错方法就是将该位逆转。



知识共享许可协议本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。

相关推荐

软考自我感觉不理想

选择题和综合应用题目,自我感觉及格,选择题在30分左右,大题在35分到40分左右。
主要是学习和记住的重点偏掉了,加上记忆力不太好,昨天晚上记住的知识点,早上一起来啥也记不住,然后考试选择题大概有6分。

暂无评论

目录展开