数据和文字的表示方法

一,数据的表示
在计算机中,数据(数值)有2种表达方式:
1,以字符串,图形等方式 表达数据。使用这种方式表达的数据无法进行 数值计算。
2,用 机器码 将 数据 存储 在 计算机中。以这种形式表达的数据 可以 进行 加减乘除 运算。
3,十进制数串 可以用 BCD码 直接表示。
在BCD码中,每个 十进制数位 占 4bits,也就是说,1B 可以表达 2个 十进制数值。在BCD码 中,12©表示正号,13(D)表示负号。符号位 放在 数值位 之后。此外,BCD码规定,数位 + 符号位 应为 偶数,如果为奇数,需在最高位补0。
BCD码 可分为 有权码 和 无权码 2种:
1)有权码:如:8421码,2421码,5211码。

以 8421码为例: 23 , 22 , 21 , 20
1011 代表: 8+2+1 = 11

2)无权码:余3码;格雷码;

余3码 :在 8421码 的基础上 加 0011;

数据表示方法:
**1,真值表示:**将 十进制数值 转换为 二进制形式,如:
(10)10 :(1010)2 ;
(-10)10: (-1010)2;
2,机器码表示:

  • 原码:分为 数值位 和 符号位,其中,最高位 为 符号位,0 代表 正,1 代表 负。
    (10)10 :01010 ;
    (-10)10 : 11010;
    其中最高位为符号位,0正1负;

  • 补码:分为 数值位 和 符号位,其中,最高位 为 符号位,0 代表 正,1 代表 负。
    equation1:补码 = 反码 + 1;
    equation2:x代表真值;
    正数 x 补码 = 正数 反码 = 正数 原码;
    负数 x 补码 = 2n+1 + x = 2n+1 - |x|;

补码 的 最大优点 就是 将 减法运算 转换为了 加法运算。

补码 采用了 模/mod 的概念,将 减法运算 转为了 加法运算;
如:以时钟为例,其 模 为12,要将 14:00 调至 9:00,有2种方法:
14 + 7 = 21 (21 - 12 = 9);
14 - 5 = 9;
在第二种方法中,利用 模的转换,可将 减法转为加法:14 - 5 = 14 + 12 - 5 = 14 + 7

  • 反码:分为 数值位 和 符号位,其中,最高位 为 符号位,0 代表 正,1 代表 负。
    正数的 原码,反码,补码 相同;
    负数的 反码 为:原码 符号位不变,数值位取反 ;
    反码 主要用途:求解补码;

  • 移码:移码 只有数值位,没有符号位,主要用于浮点数的表示中。
    在 浮点数 的规格化表示中,移码 主要用于 阶码 的表示: E = e + 127 (32bits 单精度);E = e + 1023(64bits 双精度);
    使用移码,可以使得 指数的比较变得简单明了(使用移码后,阶码 全部变为了 正整数,便于比较大小);
    equation1:移码 = 补码 数值位不变,符号位 取反;
    equation2:移码 = 2n + x;n为数值有效位;x为真值;

3,浮点数 规格化表示
浮点数 的 规格化表示 规定:当浮点数的尾数部分不为0时,将尾数最高位 设为1.M。
在 IEEE754 标准中,其具体表达方式为:
32单精度表示: x = (-1)s 1.M 2E-127 ; e = E - 127; 符号位 占 1位;指数位/阶码 占 8位;尾数位 占 23位;
64双精度表示: x = (-1)s 1.M 2E-1023; e = E - 1023; 符号位 占 1位;指数位/阶码 占 11位;尾数位 占 52位;

上述几种数据表示形式的转换方法 总结:
正数:原码 = 补码 = 反码;
负数:原码 数值位取反 -> 反码;
反码 + 1 = 补码;
移码 = 补码数值位不变,符号位取反;

二,文字的表示:
1,字符及字母 表示方法:ASCII
ASCII 用于 表达 字母/字符 以及其他一些操控符,其编码方式规定:一个 字母/符号 用 8bits来表示,其中,最高位为 偶校验位,其余7位(共 128 种形式) 用于 表达 字符/字母。
2,字符串 存储方式:
一个 字符串 由 一系列字母组成,而每一个字母 可用一个ASCII用于 存储,换言之,字符串可通过存储一系列的ASCII进行存储。
字符串的存储方式 有:1)小端存储(字符串低位 存于 地址低位,字符串高位 存于 地址高位);2)大端存储(字符串低位 存于 地址高位,字符串高位 存于 地址低位)。
如:if a > b , then read©;
将 高位字符i 存于 地址高位,低位字符) 存于 地址低位。 这种存储方式即为 小端存储。
2,汉字的表示方法:
区位码:将 汉字 分为 94个区,每个区分为94位。其实质上是将 汉字存储在一个二维数组中,表达一个汉字 需要分别 input 区码 和 位码,共4bits。如“中”,其 区位码 为:5448,54为区码,48为位码;
国标码:将 区位码 的 ”区码 和 位码“ 分别 加上 16进制的 20H。
汉字内码:将 国标码 的 “区码 和 位码” 分别 加上 16进制的 80H,这样其最高位就变为了1,从而有效防止了 撞址 ASCII(区码和位码 各占 8bits,由于ASCII的最高位为0,汉字内码 的 设定 将其 区码和位码 的 最高位 均变为了1,防止其编码 与 ASCII编码 混肴)。

三,校验码
在 info 传递过程中,由于 元件故障,噪声干扰 的缘故,常会发生 info部分丢失的现象,为了确保 info 传递无误,引入 校验码 来 供 接收人员 检测 info 是否传递无误。
校验码:将 信息位 和 校验位 拼接在一起,便形成了 校验码。

下面介绍3种 校验码:

1,奇数校验:
奇数校验码 中,有1位 校验位,其跟随在 信息位之后。
假设 现有 奇数校验码:x1,x2,x3,…,xk,C;
则 校验位 C = 信息位各位 进行 异或运算 后 ,取反:
C = ~(x1 xor x2 xor … xor xk)。
接收到的奇数校验码,如果其 校验位 C = 信息位各位 进行 异或运算 后 ,取反,则说明info 传递无误。即:If C xor x1 xor x2 xor … xk = 1 , info传递无误。

2,偶数校验
偶数校验码 中,有1位 校验位,且其跟随在 信息位之后。
假设 现有 偶数校验码:x1,x2,x3,…,xk,C;
则 校验位 C = 信息位各位 进行 异或运算:
C = x1 xor x2 xor … xor xk
在接收到 偶数校验码 后,如果 其 校验位 C = 信息位各位 进行 异或运算,则说明 info 传递无误。即: If C xor x1 xor x2 xor … xk = 0, info 传递无误。

无论是 奇数校验 还是 偶数校验 ,其只能检测出 info 中 是否有 错误信息,但是 无法 准确定位 错误的出处。

异或运算:a xor b,如果 a != b,则 a xor b = 1, 否则,a xor b = 0;

3,海明码
较 奇/偶校验 更优,海明码 不仅能 检测 info 是否有误,还能 准确定位 错误来源。
1,r个校验位 可表达的 信息位个数
具有r个校验位 的 海明码,其 校验位 表达形式 共有 2r 种。其中,除去 一种 正确的表达形式,以及 r个可能错误(r个校验位均可能发生错误),r个校验位 最大可以表示的信息位k 为:2r - 1 - r,即:k <= 2r - 1 - r。
2,海明码 中 信息位 和 校验位 的放置规则:
海明码H 中, 信息位 和 校验位 是 穿插放置的,其 信息位 和 校验位 的 归置原则 如下:
**校验位P:**第i个校验位Pi 在海明码中的 存放位置 为:2i-1
即:P1 存放在 H1;
P2 存放在 H2;
P3 存放在 H4;
**信息位D:**信息位 按 从小到大的形式 依次 摆放在 海明码 中,如:D4D3D2D1 依次摆放在 H4H3H2H1 中。
此外,对于信息位D来说,与其相关的 校验位 的 寻找规则如下:
被校验位 在 海明码H 中的 位号 = 其校验位 在海明码H 中的 位号之和
根据此公式,我们可以推出 每个 信息位Di 所对应的 校验位。
3,海明码 中,每个校验位 Pi = 其所校验的信息位Di 进行 异或运算。
即,对于校验位 及其对应的 信息位,应该存在如下等式: Pi xor Di = 0,当且等当 等式成立时,info传递无误。

4,举例说明:海明码
1)3个校验位 可以 表达 几个信息位?
2)将 信息位 和 校验位 正确摆放在 海明码H 中?
3)给出海明码检测错误的方式 以及 定位错误的方式?

**1)**根据公式 2r - 1 - r >= k,可知 k = 4,即 3个校验位的 海明码 可以 存放 4个信息位。

**2)**对于 校验位Pi,其 在海明码H 中的 存放位号为:2i-1,所以:
P1 -> H1;
P2 -> H2;
P3 -> H4;
H中的其他位号用于 存储 信息位,对于信息位 D4D3D2D1 = 1010,其在H中的存放位置如下:
H7 H6 H5 H4 H3 H2 H1
D4 D3 D2 P3 D1 P2 P1
由于 被校验位 位号 = 其校验位 位号 之和,因此,可知各个 信息位 所对应的 校验位 如下:
DD H(P1) H(P2) H(P3)
H(D4) 1 1 1
H(D3) 1 1
H(D2) 1 1
H(D1) 1 1
即,对于各个信息位,其相应的 校验位位:
D4 : P1P2P3
D3 : P2P3
D2: P1 P3
D1: P1P2
即,对于各个校验位,其 对应的信息位,及其存在的等式如下:
P1 = D4 xor D2 xor D1
P2 = D4 xor D3 xor D1
P3 = D4 xor D3 xor D2

3) 假设:
S1 = P1 xor D4 xor D2 xor D1
S2 = P2 xor D4 xor D3 xor D1
S3 = P3 xor D4 xor D3 xor D2
如果,S3S2S1 = 000,则,info传递无误;
如果,S3S2S1 = 101,则,22 + 20 = 5,H5发生错误,只要将 相应的电信号 进行一个 非门 操作即可 改正错误。
这里,错误的定位方式是 根据 原理: 被校验位位号 = 校验位位号 之和 ,来确定的。
式中,P3 , P1 对应的 海明码号 分别为 H4,H1,二者校验的 信息位 为 H5(D2)。

猜你喜欢

转载自blog.csdn.net/u014765410/article/details/123079646