数据表示
计算机处理的是数据是二进制,形式上最简单,物理上最可靠
数据包括数值型数据和非数值型数据
进制
进制表示
0b(二进制),0x/H(十六进制)
如
0b110111
、0x4FFFF
、4FFFFH
D(Demical) 十进制
B(Binary) 二进制
O(Octal) 八进制
H(Hexadicimal) 十六进制
进制转换
R进制转十进制:位权展开法
41000H: 4×164+1×163+0×162+0×161+0×160 = 266240
浮点数转二进制:乘2取整法
十进制转R进制:短除法
快捷方式:38 = 25 + 22 + 21 = 100110
M进制转N进制:先转十进制,再转N进制
2转8、2转16(每3位三合一,每4位四合一):快速转换
如 100 100 转 8, 三个一组:100 = 4 100 = 4,所以结果是 44
如 10 0100 转 16 四个一组:0010 = 21 0100 = 4, 所以结果为 24
机器数
0和1表示(即二进制计数制),小数点隐含不占位置
无符号数:没有符号位,表示正数
带符号数:机器数的最高位为符号位(正0负1,单双符号位?)
真值
机器数对应的实际数值
定点数
定点表示法:
- 纯小数(定点小数,小数点固定在最高(有效数值)位之前)
- 纯整数(定点整数,小数点固定在最低(有效数值)位之后)
浮点数
- 计算机中浮点数的表示(类似科学计数法,只不过十进制变为2进制):N=F*2E E为阶码,F为尾数;
- 阶符 --- 阶码 --- 数符 --- 尾数
- 所能表示的数值范围由阶码确定,所表示的数值精度由尾数确定
- 浮点数运算:科学计数法(尾数、指数、基数);计算步骤:对阶(小对大)
编码方法(码制,为了便于运算,针对:带符号数)
原码:一个数的正常二进制(0有正0和负0)
[+1]原 = 0 0000001
反码:正数的反码为原码,负数的反码是除符号位外其它各位按位取反(0有正0和负0)
补码:正数的补码为原码,负数的补码为反码末位加1并有进位则进位(0只有一种形式)
移码:原码的补码的符号位取反
数值表示范围:机器字长为n时各种码取值范围(定点整数,定点小数)
原码:-(2n-1 - 1) ~ 2n-1 - 1
反码:-(2n-1 - 1) ~ 2n-1 - 1
补码:-2n-1 ~ 2n-1 - 1
移码:-2n-1 ~ 2n-1 - 1
校验码
1. 码距
在两个编码中,从A码到B码转换所需要改变的位数
如: 00 转为 11,码距为2
一般:码距越大,越有利于检错和纠错
2. 奇偶校验码
在编码中增加1位校验位来使编码中1的个数为奇数或者偶数,从而使码距变为2(出错位和校验位)
奇校验:奇数个1
偶校验:偶数个1
只能检一位错,无法纠错
3. 循环冗余校验码CRC(cyclic redundancy check)
只能检错,不能纠错
CRC编码计算步骤:
有一个约定的生成多项式
在原始信息位后加多项式最高次幂个0
将补0后的信息与多项式(对应的二进制)做模2除法,得到余数(前面加0补足最高次幂个)
将原始信息与余数连接起来得到编码
4. 海明码
本质也是利用奇偶性
构成方法是在确定位置(2^n)上插入k个校验位,通过扩大码距实现检错和纠错
数据位是n位,校验位是k位;根据数据位计算校验位的值(总共的位数是数据位+校验位),从而得到海明码
2的k次方-1≥n+k