【组成原理】第二章 数据的表示与运算

1. 为何产生ASCII码?
在计算机中,全部的数据在存储和运算时都使用二进制数表示(由于计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些经常使用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪一个符号,互相通讯而不形成混乱,就必须使用相同的编码规则,因而美国有关的标准化组织就出台了ASCII编码,统一规定了上述经常使用符号用哪些二进制数来表示。
包括:10个十进制数码、52个英文大小写和必定数量的专用符号(%, @, +等等),总共128个字符。windows

2. 为何会有大小端模式之分呢?
这是由于在计算机系统中,数据存储是以字节为单位的,每一个地址单元都对应着一个字节,一个字节为8bit。可是在C语言中除了8bit的char以外,还有16bit的short型,32bit的long型(要看具体的编译器);另外,对于位数大于8位的处理器,例如16位或者32位的处理器,因为寄存器宽度大于一个字节,那么必然存在着一个若是将多个字节安排的问题。所以就致使了大端存储模式和小端存储模式。二者有相应应用优点,做为一种规则约定俗称。编码

咱们经常使用的X86结构、不少的ARM和DSP是小端模式,而KEIL C51则为大端模式。有些ARM处理器还能够由硬件来选择是大端模式仍是小端模式。
在操做系统中,x86和通常的OS(如windows,FreeBSD,Linux)使用的是小端模式。但好比Mac OS是大端模式。spa

小端模式:低字节存放在低地址
大端模式:高字节存放在低地址操作系统

3. 汉明码
汉明码是在电信领域的一种线性调试码,以发明者理查德·卫斯里·汉明的名字命名。汉明码在传输的消息流中插入验证码,以侦测并更正单一比特错误。因为汉明编码简单,它们被普遍应用于内存(RAM)。其SECDED版本另外 加入一检测比特,能够侦测两个或如下同时发生的比特错误,并可以更正单一比特的错误。调试

1、1开始给数字的数据位(从右向左)标上序号, 1,2,3,4,5...;
2、将这些数据位的位置序号转换为二进制,1, 10, 11,100, 101,等;
3、数据位的位置序号中全部为二的幂次方的位(编号1,2,4,8,等,即数据位位置序号的二进制表示中只有一个1)是校验位;
4、有其它位置的数据位(数据位位置序号的二进制表示中至少2个是1)是数据位; 5、每一位的数据包含在特定的两个或两个以上的校验位中,这些校验位取决于这些数据位的位置数值的二进制表示。 blog

根据纠错理论得:L-1=D+C 且D>=C
即编码最小距离L越大,则其检验错误的位数D越大,纠正错误的位数C也越大内存

设欲检验的的二进制代码为n位,为使其具备纠错能力,需增添k位检验位,组成n+k为的代码。为了能准确对错误定位以及指出代码代码位置,新增添的检验位数k应知足:2^k>=n+k+1。编译器

海明码计算要按如下步骤来进行:计算校验码位数→肯定校验码位置→肯定校验码
最后每组经过异或逻辑运算(与偶校验原理同样),使每组的运算结果为0,便可得出第 i 位校验码的值。it

实现校验和纠错
把以上这些校验码所校验的位分红对应的组,则在接收端的对各校验位再进行逻辑“异或运算”,若是采用的是偶校验,正常状况下均为0。编译

 

步骤:

(1)肯定海明码的位数

n+k <= 2^k - 1(n位有效信息的位数,k位校验位的位数)

(2)肯定校验位的分布

规定校验位Pi放在海明位号为2^i位上,其他信息为信息位

海明码的各位分布以下:

H7 H6 H5 H4 H3 H2 H1
D4 D3 D2 P3 D1 P2 P1

 

 

 

(3)分组造成校验关系

被校验数据位的海明位号等于校验该数据位的各校验位海明位号之和。

如D4放在位置H7上,7分解成4+2+1,由这些位的校验位P三、P二、P1校验。

(4)校验位取值

P1由H3,5,7,9,11位的信息位进行异或;

P2由H3,6,7,10,11位的信息位进行异或;

P3由H5,6,7,12,13位的信息位进行异或。

(5)海明码校验

S1 = P1 D1 D2 D4异或

S2 = P2 D1 D3 D4异或

S3 = P3 D2 D3 D4异或

 

S3 S2 S1 = 001,说明H1位出错,取反便可纠正。

相关文章
相关标签/搜索