408计算机组成原理——第二章(1)

目录

  1. 数制
  2. 编码

一、数制

  • 在计算机系统内部使用二进制进行编码的原因:
    1.二进制只有两种状态,因此用两个稳定的物理器件就可以表示0和1,成本低。
    2.0和1正好对应了逻辑真和假,为计算机实现逻辑运算提供了条件。
    3.二进制的编码和运算规则简单,可以通过逻辑门电路方便地实现算术运算。

  • 进位计数法
    二进制:计算机用的最多的计数制,只有0和1两种数字符号
    八进制:八进制是二进制的一种书写形式,有0~7共8个不同数字符号
    十六进制:也是二进制的一种书写形式,有0~9,A,B,C,D,E,F共16个数字符号

  • 不同进制之间的转换
    二进制与八进制或十六进制:我们可以从小数点往左数,把二进制每三(四)个数分为一组,最左边不够3个可以+0补齐,对于小数则从小数点向右数,也是每三(四)个分为一组。
    如下图,二进制100111010化为8进制后为472,二进制转化为16进制后为13A
    在这里插入图片描述
    二进制与十进制:这里不做解释

  • 真值和机器数:带正负号的数为真值,真值是机器数所代表的实际值。通常0代表正,1代表负

二、编码

  • BCD码:
    采用4位二进制数来表示一位十进制数中的0~9这10个数码。因为4位二进制数可以组合16种代码,因此有4种状态位冗余状态。这里说一下8421码,及4位数的权值分为为8,4,2,1,但若两个8421码相加小于等于(1001)则不需修正,大于等于(1010)则要加6修正,因为从1010到1111为无效码,他们要+6.
    在这里插入图片描述

  • ASCII码

  • 汉字的编码
    这两个我会再写一篇专门讲编码,理清ASCII、GBK、Unicode、UTF-8之间的联系。

  • 校验码:
    1.奇偶校验码:在了解奇偶校验码前我们要先知道码距的概念(任意两个合法码字之间最少变化的二进制位数成为数据校验码的码距),码距越大,检错,纠错的能力越强。
    奇偶校验码是在原编码上加一个校验位,它的码距等于2(因为码距小于2的话,1个码字出错后可能是另一个合法的码字),可以检测出一位错误,但奇偶校验不能确定出错的位置,只能发现数据代码中奇数位的出错情况,但不能纠正错误,常用于对存储器数据的检查或传输数据的检查。
    有两种可选的校验规律:奇校验码和偶校验码,使整个校验码中“1”的个数为奇(偶)数
    例如:两个编码1001101和1010111
    1001101 奇校验:11001101 偶校验:01001101
    1010111 奇校验:01010111 偶校验:11010111
    1001101中1有偶数个,所以奇校验吗需要+1变为奇数,偶校验需要+0保持偶数,1010111同理
    硬件实现:进行异或运算得到偶校验位,进行偶校验时用异或,如果加校验位后与与结果不符,则出错。
    2.海明校验码:是一种多重奇偶校验码,在有效信息位中加入几个校验位形成海明吗,并把海明码的每个二进制位分配到几个奇偶校验组中,因此当某一位出错时,就会引起有关的几个校验位的值发生变化,既能发现错位,又能找出错位的位置。
    例:在n=4,k=3时,求1010的海明码。(王道书例子)
    (1)确定海明码的位数。
    n为有效信息位,k为校验位的位数,则需满足:n+k<=2^k-1,因此可计算发现n,k有效。则设信息位D4D3D2D1(1010),共4位,校验位为P3P2P1,共3位,对应的海明码为H7H6H5H4H3H2H1
    (2)确定校验位的分布
    只用记着校验位在海明位号的2的i-1次幂的位置上
    在这里插入图片描述
    (3)分组以形成校验关系
    每个数据位用多个校验位进行校验,被校验数据位的海明位号等于校验该数据位的各校验位海明位号之和。
    D1放在H3上,因为1+2=3,所以应由P1P2校验
    D2放在H5上,因为1+4=5,所以应由P1P3校验
    D3放在H6上,同理得,由P2P3校验
    D4放在H7上,由P1P2P3校验
    (4)校验位取值
    校验位Pi的值为第i组(该校验位校验的数据位)所有位求异或
    P1=D1异或D2异或D4=0
    P2=D1异或D3异或D4=1
    P3=D2异或D3异或D4=0
    所以,1010对应的海明码为1010110
    (5)海明码的检验原理
    每个校验组分别利用校验位和参与形成该校验位的信息位进行奇偶校验检查
    例:
    S1=P1异或D1异或D2异或D4
    S2=…
    S3=…
    如果S3S2S1的值为“000”,则说明无错,否则说明出错,且这个数就是错误位的位号,例如S3S2S1=001,则说明第一位出错,可将该位取反进行纠错。
    3.循环冗余校验(CRC)
    基本思想:在K位信息码后再拼接R位的校验码,整个编码的长度位N位。
    这里还是利用例题:
    在这里插入图片描述
    (1)根据多项式生成对应的二进制码
    二进制码的位数一定是多项式系数最大值+1,这里为3+1=4,缺少几次幂,对应位置设为0,这里多项式的对应二进制码位1101,多项式对应的二进制码位作为除数。
    (2)在信息码后加0
    多项式系数最大值多少就加几个0,这里加0后为101001000作为被除数。
    (3)进行除法运算
    具体除法过程和二进制类似,每次相除移位,做运算(这里是异或运算)
    这里可得到余数001,(余数的位数=生成多项式最高幂次)
    (4)得到CRC码
    信息码后+余数:101001001
    (5)检验和纠错
    接受端收到CRC码,用生成多项式G(x)做模2除法,若余数为0,则码子无错
    若做模2运算后不为0,则余数的大小及为出错的位置,取反即可修正
    例如:CRC码为101001011,与1101进行模2运算,得到余数010,则说明C2出错,将C2取反就行。

     	第二章内容较多,分多次进行总结。
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值