数据的表示

数制与编码

计算机使用二进制进行编码的原因

  • 使用两种状态的物理器件就能表示(如高低电平)
  • 二进制与逻辑真和假对应
  • 二进制编码和运算规则简单

进位计数制及其相互转换

一个进制数可表示为

其中,b称为基数,b^a是第a位的位权,a0~an可以取0~b的任意数字

结合十进制来看,即b为10,则a0表示个位,a1表示十位···

二进制:逢二进一,b=2

八进制:逢八进一,b=8

十六进制:逢十六进一,每个数可取0~9,A,B,C,D,E,F,b=16

进制间的转化

二进制转八进制 三位二进制数表示一位八进制数

二进制转十六进制 四位二进制数表示一位十六进制数

二进制转十进制 二进制按权展开相加

真值和机器数

真值:带“+”或“-”符号的数,真值是机器数所代表的实际值

机器数:拿一位出来做符号位的数,通常用“0”表示“正”,用“1”表示“负,如0,101(逗号实际不存在,仅为区分符号位与数值位)表示+5。这种把符号数字化的数称为机器数

BCD码

BCD码常用4位二进制数来表示一位十进制数中的0~9十个数码。但四位二进制能表示十六种状态,所以有6种为冗余状态

  • 8421码(最常用)。有权码,则权值从高到低做次为8,4,2,1

  • 余3码。无权吗,是在8421码的基础上加(0011)形成的,因每个数都多余“3”, 因此称为余3码

  • 2421码。有权码。权值由高到低分别为2,4,2,1,特点是大于等于5的4位 二进制数中最高位为1,小于5的最高位为0

字符与字符串

字符编码ASCHI 码

它可表示10个十进制数码、52个英文大写字母和小写字母(A一2,a一z)及一定数量的专用符号(如S、%、+、等),共128个字符。

0~9ASCHI 码为48(011 0000)~57(011 1001),去掉三位最高位,正好是0~9二进制

汉字编码

汉字编码分为输入,内部处理,输出

输入

  • 数字编码(区位码)
  • 拼音码(拼音输入)
  • 字形编码(五笔输入等)

内部处理:汉字内码()

输出:字模码

两种输入码

区位码:用两字节表示个汉字,每字节用七位码,并将汉字和图形符号排列在一个94行94列的二维代码表中。区位码十4位十进制数,面2位是区码后2位是位码。所以称为区位码

国标码: 每个汉字的全国统一的代码,是汉字编码的国家标准,如GB2312,GBK等

关系

国标码=(区位码)16+2020H 避免和ASCHI码前32位控制符冲突

汉字内码=(国标码)16+8080H ASCHI码最高位为0,为了区分改汉字内码最高位为1

校验码

奇偶校验码

奇校验:整个校验码(有效信息位和校验位)中“1“为奇数个

偶校验:整个校验码(有效信息位和校验位)中“1“为偶数个

缺点: 只能检测出奇数个数据位错误,不能纠错 ;奇偶校验每传输一个字节都需要加一位校验位,对传输效率影响很大。

海明校验码

是一种多重奇偶校验码

1.确定校验位数

n+k≤2^K-1

n为数据位,k为校验位数

2.确定校验位分布(P校验位,D数据位)

··· H5 H4 H3 H2 H1

​ D2 P2 D1 P2 P1

​ 2^2 2^1 2^0

3.分组

被校验数据的海明码=校验位海明码的和

如D1的海明码是H3=H1+H2

​ D2 H5=H1+H4

​ ···

4.求校验位Pi

Pi=所有(由他校验过的数据位)求异或

假如只有两位数据位D1,D2

P1=D1异或D2

5.校验

s1=P1异或D1异或D2

若s1为0则无错,为1说明H1出错,取反则纠错

CRC冗余校验码

计算原理就是作除法。把数据位看作被除数,设定一个多项式作除数。在数据位末尾加上一段冗余码,使得组合后的新数据流能够整除除数。 这个除法很特殊,是模2除法

例:有八位是数据位数如下,设多项式x^4+x+1,即除数为 10011

先给被除数后补x的最高次方个0

即CRC码为 10101011 1010