这是我参与更文挑战的第9天,活动详情查看:更文挑战
十进制转换为任意进制数
- 对整数 : 除基取余法
- 对小数: 乘基取整法
BCD码
- 8421码 会有废码
- 余3码 8421 + 3
- 2421码 大于等于5的4位二进制数中最高位为1,小于5最高位为0 ,按位取反得到9的补数
字节码
每个字节存储一个字符,小端(低高)、大端
校验码
-
奇偶校验码
- 做法:在原编码上加一个校验位
- 码距:2 //码距是两个编码对应比特取值不同的比特数称为这两个码字的海明距离。
- 功能:可以检测出奇数位错误
不能确定出错的位置
通过校验位使整个校验码中“1”的个数位奇数或偶数,奇数则成为奇数校验。
-
-
做法:
-
海明码公式::这个式子的意思是,可以用来校验错误的数字个数()要大于或者等于原数据位数(n)和校验位数(k)的和。即,校验码能够表示的所有数字2^k^ 减去一个正确的可能,一定要大于等于,任何一位(n+k)可能出错的情况
-
码距:L-1=D+C 且D C 即编码最小码距L越大,其检测错误的位数D越大,纠正错误的位数C也越大,且纠错能力恒小于等于检错能力
-
计算:讲校验码放在2^i^位上,然后利用奇偶校验确定值
-
纠错方式:
-
-
循环冗余校验码
- 做法:在K位信息码后再拼接R位校验码,整个编码长度为N位。又称(N,K)码
- 通过信息码与多项式相除**【模2除法,直接异或,不进位不借位】**取余数,作为校验码R,并在接收端用CRC码除以多项式,若能整除,则没问题
- 若不能整除,则余数是多少,哪位出错。
数据存储方式
小端模式:先处理低位字节,大端模式:先处理高位字节
struct存储边界对齐
- 每个成员按其类型对齐,struct长度必须是成员中最大对齐值的整数倍
定点数的运算
原码补码反码移码
定点表示即约定机器数中的小数点位置是固定不变的
- 原码:机器数的最高位表示该数的符号,其余各位表示书的绝对值
- 补码:正数不变,负数取反加1(为了可以正负数直接相加)
- 反码
- 移码:数字加偏置,一般为2^n^
- 移码中零的表示唯一
- 一个真值的移码和补码仅差一个符号位,
- 移码全为0时,对应真值最小值-2^n^ 2^n^-1
- 保持了大小规律
定点数得移位运算
算术移位
逻辑移位
用于无符号数,均添0
循环移位
符号扩展
正数全是0,负数原码反码1,补码整数1小数0
除了补码的小数是0剩下负数全是1
溢出概念和判别方法
定点数乘除法:主要掌握补码乘除原理和特点,对于运算过程不必要过分纠结
(1).定点数补码乘法运算:掌握Booth算法,可以按照溢出来理解,当出现01表示正溢出需要+[x]补,出现10表示负溢出需要+[-x]补;
(2)定点数补码除法运算:余数和除数同号,上商"1";余数和除数异号,上商"0";最后一步商恒置"1"