计算机网络概论——第一章计算机系统知识笔记02 数据表示+校验码

第二小节 数据表示+校验码

  • 数的表示
    • 计算机中的数值是如何表示的?
      • 进制
        • 十进制转换成二进制
        • 十进制小数转二进制
      • 原码
      • 反码
      • 补码
      • 移码
  • 校验码
    • 奇偶校验码
    • 海明码
    • 循环冗余校验码

数的表示

计算机中的数值是如何表示的?

    各类数值在计算机中的表达形式称为机器数,它是一种二进制表达方式,即用0和1来表示数值。数的正负也是用0和1表示(0是正数,1是负数)。
机器数有无符号和有符号两种,无符号表示正数,在机器数中没有符号位。有符号数在机器数中是带符号位的,其最高位是表示正负的符号位,其余位的表示数值。

进制

    在我们日常生活中,数值的表示一般采用的是十进制,除此之外还有一些数值的表达方式(二进制、八进制、十六进制),计算机就是采用二进制的表达方式。在表达式中,我们可以在数值前面添加符号来代表进制,二进制用后缀B,如10101111B,八进制用后缀Q,如257Q,十进制用后缀D(也可以不用后缀)如175D或175,十六进制用后缀H,如48AH

十进制转换成二进制

转换方法:除二取余法
我们可以采用除二取余法,转换过程如下图所示,
计算机网络概论——第一章计算机系统知识笔记02 数据表示+校验码_第1张图片
我们得到余数后,从下往上取,得到是 1001000即 72=1001000B

十进制小数转二进制

    我们可以将十进制小数分成两个部分,第一个部分是整数部分(整数部分和小数部分),整数部分我们继续采用“除二取余,逆序排序”法,小数部分我们采用“乘二取整法,顺序排序”,具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又 得到一个积,再将积的整数部分取出,如此进行,直到积中的整数部分为零,或者整数部分为1,此时0或1为二进制的最后一位。或者达到所要求的精度为止。然后合并得到两个结果。
    例如:请写出3.8125的二进制表示。
计算机网络概论——第一章计算机系统知识笔记02 数据表示+校验码_第2张图片

原码

    什么是原码:原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值,如果机器字长为n,则真值部分的位数为n,若不满n位则用0在真值前方填位,符号位占1位机器字长。
例如:若机器字长n等于8,请分别给出+2,-2,-127,+127,+0.5,-0.5的原码表示

[+2]=0 0000010                 [-2]= 1 0000010

[-127]=1 11111111              [+127]=0 11111111

[+0.5]=0 ◇1000000             [-0.5]=1 ◇1000000 (◇表示小数点的位置)

反码

    ①正数反码就是原码本身
    ②负数反码:除符号位,其余位数值取反,即0改成1,1改成0
举例:+2,-2,-127,+127,+0.5,-0.5的反码如下

[+2]=0 0000010                 [-2]= 1 1111101

[-127]=1 0000000              [+127]=0 11111111

[+0.5]=0 ◇1000000             [-0.5]=1 ◇0111111(◇表示小数点的位置)

补码

①正数的补码就是其本身
②负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
举例:机器字长为8的情况下,+2,-2,-127,+127,+0.5,-0.5的补码如下

[+2]=0 0000010                 [-2]= 1 1111110

[-127]=1 0000001              [+127]=0 11111111

[+0.5]=0 ◇1000000             [-0.5]=1 ◇1000000(◇表示小数点的位置)

说明:
特别的,在原码中0有两种表示方式:[+0]原=0000000,[-0]原=1000000。
在反码表示中,0也有两种表示形式:[+0]反=0000000,[-0]反=11111111。
在补码表示中,0有唯一的编码:[+0]补=0000000,[-0]补=0000000。

移码

移码指的是在数X上增加一个偏移量来定义的,常用来表示浮点数中的阶码,所以是整数。如果机器字长为n,规定偏移量为2n-1。若X是整数,则[X]移=2n-1+X
例如:机器字长为8的情况下,+2,-2,-127,+127,+0.5,-0.5的移码如下
[+2]=1 0000010                 [-2]= 0 1111110

[-127]=0 0000001              [+127]=1 11111111

[+0.5]=1 ◇1000000             [-0.5]=0 ◇1000000(◇表示小数点的位置)

在偏移2n-1情况下,直接将补码的符号位取反就可以得到移码了

校验码

奇偶校验码

最简单的校验码,只能检测出奇数位出错。
方法:在编码中增加一位校验位来使编码中的1数量为奇数(奇校验)或者为偶数(偶校验)

海明码

方法:在数据位之间的特定位置插入k个校验位,设数据位是n位,校验位是k位,则n和k必须满足

2k-1≥n+k

循环冗余校验码

方法:利用生成多项式为k个数据位产生r个校验位来进行编码其编码长度为k+r

关于校验码有一部分内容较为复杂,下次单独写一篇关于校验码的详细内容

你可能感兴趣的:(软件设计师考试,其他)