[REV]编码和可靠性编码

  • BCD
  • 格雷码
  • 定/浮点数
  • CRC
  • 海明

BCD码

  • 8421
  • 2421
  • 余3
8421

略.1010~1111无效.

2421

无重复但有多值.对9自补规则取消多值.0101-1010无效.

余3

平衡8421的无效区间使其对9自补.
VALUE=8421+3.

格雷码

最高位不变,其余位 G i = B i + 1 ⊕ B i G_i=B_{i+1}\oplus B_i Gi=Bi+1Bi
就是卡诺图中用的顺序.相邻只有一位不同.
特点:编/解码相同

可靠编码

码距:任意两个合法编码不同位数最小值

≥ e + 1 \geq e+1 e+1单独检测e位
≥ 2 t + 1 \geq 2t+1 2t+1单独纠错t位
≥ e + t + 1 \geq e+t+1 e+t+1联合检测纠错

奇偶校验

通过操作一位校验码使编码中1的个数为奇数/偶数

  • 不能纠错
  • 不能检出偶数个错误

CRC(⚠)

Ref:https://zhuanlan.zhihu.com/p/26469035
在这里插入图片描述
在这里插入图片描述
注意:

  • 使用XOR来代替减法
  • 其中被除数是需要计算校验和的信息数据流的二进制表示;除数是一个长度为(n+1)的预定义(短)的二进制数,通常用多项式的系数来表示。在做除法之前,要在信息数据之后先加上n个0.
  • 发送码串的时候,在原始码串后面加上CRC。CRC一般有8bit,16bit,和32bit。
  • 接收者收到M和R后,检查 M ( x ) ⋅ x n + R ( x ) M(x)\cdot x^{n}+R(x) M(x)xn+R(x)是否能被 K ( x ) K(x) K(x)整除。如果是,那么接收者认为该信息是正确的。
  • 这里M(x)是原始的信息多项式。K(x)是n阶的“钥匙”多项式。

海明校验

Ref:https://blog.51cto.com/winda/1068000

  • 一个可以有多个校验位,具有检测并纠正一位错误代码的纠错码
  • 海明码的检错、纠错基本思想是将有效信息按某种规律分成若干组,每组安排一个校验位进行奇偶性测试,然后产生多位检测信息,并从中得出具体的出错位置,最后通过对错误位取反(也是原来是1就变成0,原来是0就变成1)来将其纠正。

要使用海明码纠错,首先就要确定发送的数据所需要要的校验码(也就是“海明码”)位数(也称“校验码长度”)。它是这样的规定的:假设用N表示添加了校验码位后整个信息的二进制位数,用K代表其中有效信息位数,r表示添加的校验码位,它们之间的关系应满足: N = K + r ≤ 2 r - 1 N=K+r≤2^r-1 N=Kr2r1,即完成后的编码位数小于等于 2 r − 1 2^r-1 2r1.
这些校验码不是直接附加在信息码的前面、后面或中间的,而是分开插入到不同的位置。但不用担心,校验码的位置很容易确定的,那就是校验码必须是在 2 n 2^n 2n次方位置,如第1、2、4、8、16、32,……位(对应20、21、22、23、24、25,……,是从最左边的位数起的),这样一来就知道了信息码的分布位置,也就是非 2 n 2^n 2n次方位置,如第3、5、6、7、9、10、11、12、13,……位(是从最左边的位数起的)

浮点数

32bits 1位符号位 8位阶码 23位尾码->精度23位有效数字

  1. 提取符号位
  2. 将二进制串转换为 1. ∗ ∗ ∗ ∗ ∗ × 2 e 1.*****\times 2^e 1.×2e
  3. 移码=e+127
  4. 尾码=********

在这里插入图片描述

规格化

Ref:https://blog.csdn.net/xiaomibuqiang91/article/details/73956620
在尾数用补码表示时,规格化浮点数应满足尾数最高数位与符号位不同,如相同就是不满足规格化.
若不对浮点数的表示作出明确规定,同一个浮点数的表示就不是唯一的。例如,十进制数可以表示成1.11×10ˇ0,0.111×10ˇ1,0.0111×10ˇ2等多种形式。为了提高数据的表示精度,当尾数的值不为0时,尾数域的最高有效位应为1(也就是 1. ∗ ∗ ∗ ∗ ∗ × 1 0 ∗ 1.*****\times 10^* 1.×10),这称为浮点数的规格化表示。否则以修改阶码同时左右移小数点位置的办法,使其变为规格化数的形式。
但在IEEE754标准中,一个规格化的32位浮点数x的真值表示为:
x=(-1)ˇS×(1.M)×2ˇ(E-127) e=E-127 其中S是浮点数的符号位,占1位。M是尾数,放在低位部分,占用23位,小数点位置放在尾数域最左(最高)有效位的右边。E是阶码,占用8位。它的尾数域所表示的值是1.M。e为实际指数。因为规格化浮点数的尾数域最左位(最高有效位)总是1,故这一位经常不予存储,而认为隐藏在小数点的左边。

其他

在这里插入图片描述

大端模式:数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中,这种存储模式就类似把数据当做字符串顺序处理,例如:数据中两个字节按顺序为:FE
10 ,它表示的一个数就是0xFE10。

换句话说:内存的低地址存放着数据高位;

小端模式:数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中,这种存储方式就是将地址的高低和数据的位结合起来,前面的例子按照小端模式表示,应该为:0x10FE。

换句话说:内存的低地址存放着数据低位。

32位下

char :1个字节
char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节

Ref

https://www.cnblogs.com/candycaicai/archive/2010/12/21/1912986.html
https://blog.csdn.net/liushuijinger/article/details/7429197
https://blog.csdn.net/lyl0625/article/details/7350045

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值