> 文章列表 > 计组——计算机中的数据

计组——计算机中的数据

计组——计算机中的数据

问题:数据如何在计算机中表示?
运算器如何进行数字运算和逻辑运算?

计组2.1

  • 1.进制转化:
  • 2. BCD码
  • 3.字符和字符串
      • 1.ASCII
      • 2.汉字编码
      • 3.字符串
  • 4.奇偶校验码
      • 1. 校验原理
      • 3. 奇偶校验
  • 5.汉明码
  • 6.循环冗余校验码

1.进制转化:

所有 符号*位权 之和
十进制 D
基数:每个数码位不同符号的个数,r进制的基数为r
二进制 ——> 八进制
3位一组 因为111正好对应7
二进制 B ——> 十六进制 H/0x
4位一组 因为1111正好对应15
不足需要补位
计组——计算机中的数据十进制 ——> 其他进制

  1. (整数部分)除以基数取余数法,第一次求得的余数权值为1(r^0) ,以此类推(r^1,2,3…)
  2. (小数部分)乘以基数取整数法,第一次求得的整数权值为r^-1, 以此类推r^-2,-3… 注:用10进制表示的小数转化为其他进制有时只能求的一个近似值
  3. 拼凑法,r进制的权值拼凑
  4. 一般采用10进制 ——>2进制 ——> 其他进制
    数字实际存储到计算机中为机器数,1/0示正负号

2. BCD码

  1. 因为二进制表示为10进制很麻烦,因此有了BCD码,用4bit(16种状态)位表示10进制,因此由6位冗余
  2. 8421BCD码,代表二进制的权值,BCD码有权码
    10进制的每一个数字可用一个8421码来表示,存储在计算机中,例如985在计算机中表示为1001 1000 0101
    8421码的运算:例如 0101+1000落在了非法区间1010~10010,因此需要加0110(6)进行修正 0001 0011
  3. 余三码,8421码+(0011)B ,无权码
  4. 2421码 ,有权码 为了防止编码的歧义,规定0~4首位为0,5 ~9首位为1
    计组——计算机中的数据
    计组——计算机中的数据

3.字符和字符串

  1. 英文字符在计算机中的表示
  2. 中文字符在计算机中的表示
  3. 字符串的存储

1.ASCII

  1. 数字,字母,符号 ——> 128个字符 ——> 7位二进制编码 ——> ASCII 用1byte表示 高位补0
  2. 0~31 127用于控制和通信 DEL , ACK
  3. 32~126 可印刷字符
    计组——计算机中的数据
    将数字0~9 字母a~z A~Z,对应的ASCII码用二进制表示发现,数字 0~9的ASCII前4个bit位相等, 后面的比特位对应0~9的BCD码,大写字母和小写字母前三个bit位相等,后面的比特位代表 1~26的二进制表示
    计组——计算机中的数据
    解:h的ASCII为104,二进制表示为01101000,a的ASCII为01100001,z的ASCII为01111010
    计组——计算机中的数据

2.汉字编码

  1. 区位码(94*94)二维数组 用区号(纵坐标)和位置号(横坐标)(横纵坐标)对应一个汉字
    问题:区位码第一个字符处于0~ 93,则在网络通信中会存在错误
    解决:给区码和位码加上0~32,也就是20H,那么区码和位码都会从32开始,避开了0 ~31控制字符,这样就变成了国标码,国标码横纵坐标再加上80H(128)才能存入计算机,成为汉字内码
    原因:计算机无法区分国标码和ASCII,因此需要转为汉字内码,当计算机发现这两个字节最高位都是1,那么就说明此时读取的是汉字(先读1byte发现<128代表是ASCII,发现>128说明还需要读取1byte组成汉字,加128的目的就是避开ASCII范围,与ASCII兼容)
  2. 输入编码:内——>nei2转为国标码——>汉字内码——>存储在计算机中
  3. 汉字字形码:汉字内码——>(国标码)——> 汉字字形码
    计组——计算机中的数据

3.字符串

计组——计算机中的数据
计组——计算机中的数据
计组——计算机中的数据

4.奇偶校验码

1. 校验原理

由若干位代码组成的一个字叫码字。
将两个码字逐位进行对比,具有不同的位的个数称为两个码字间的距离
一种编码方案可能有若干个合法码字,各合法码字间的最小距离称为(码距)

计组——计算机中的数据
第一种校验方式码距为1,就使得一个合法的码字跳变为另一个合法的码字,接收方无法检测数据在传输过程中有没有发生错误
第二种校验方式码距为2,如果传输过程中一个bit位错误会使得传输的码字进入非法状态,检测数据错误
当d=1时,无检错能力;当d=2时, 有检错能力;当d>3时, 若设计合理,可能具有检错、纠错能力

3. 奇偶校验

计组——计算机中的数据

局限性:如果奇数个bit位发生跳变,可以检测出错误,不能纠错,但是两个bit位错误就检测不出来了
一个校验位只能携带两种信息状态:对/错

偶校验的硬件实现:各信息进行异或(模2加)运算,得到的结果即为偶校验位
计组——计算机中的数据
进行偶校验(所有位进行异或)若结果为1说明出错
计组——计算机中的数据
计组——计算机中的数据

5.汉明码

海明码设计思路:将信息位分组进行偶校验-——> 多个校验位
由奇偶校验码到汉明码
计组——计算机中的数据
多个状态位携带多种状态信息,对/错 错在哪里(由多个校验位标注)
n个信息位多少分组?n个信息位分派到k个分组中,对k个分组分别进行偶校验,每个分组对应一个校验位,最终携带k个冗余校验位,反映对错,哪一个bit位出现错误,k bit有反映2^k个状态
计组——计算机中的数据
计组——计算机中的数据
计组——计算机中的数据
步骤:

  1. 由信息位确定校验位,数据位数n+k,校验位Pi在2^(i-1),校验位的位数对应2进制下的权值是Pi所处的在整个数据中的位置 校验位P1 P2 P3所对应的权重是1,2,4和实际信息位所处在数据中的位置的权重是一一对应的
  2. 确定规则,三个分组中应该包含哪几个信息位 ,每个校验码对应的分组中的信息位异或结果就是校验码的值,最后补齐全部的数据
  3. 校验:将每一个分组进行偶校验,没有出错则最终结果为0
  4. 纠错检错:计组——计算机中的数据
    S3S2S1代表了出错的位置
    原理:
    计组——计算机中的数据
    计组——计算机中的数据

6.循环冗余校验码

约定一个除数,在接收到数据后与该除数相除,检测余数是否为0
计组——计算机中的数据
生成多项式可以对应所约定的除数,信息位加上生成多项式最高次幂就是校验码位数
计组——计算机中的数据
计组——计算机中的数据

计组——计算机中的数据
模二除最终得到的余数只比除数少一位,这个余数就是校验位,这个校验码和1101进行模二除得到余数一定为000
计组——计算机中的数据
计组——计算机中的数据
余数和出错位置的关系
计组——计算机中的数据
在这个例子中会出现余数相同,出错位置不同的情况
六位信息位,三位校验位,数据一共9位,3个bit的校验位最多8中状态,可以表示七种出错,因此无法唯一确定
计组——计算机中的数据
当信息位少了,生成多项式不变,此时3bit可以表示全部的状态,并且生成多项式不变,出错位和余数的对应关系也是确定的
循环冗余校验码的位数:
K个信息位,R个校验位,若生成多项式选择得当,且 2^R>=K+R+1
则CRC码可纠正1位错,实际应用中,计算机网络,检错不纠错

了解:
计组——计算机中的数据
计组——计算机中的数据