2-数值与编码
2.1.1进位计数制
1.进制之间的转换
- 其他进制–十进制
- 二进制–八进制/十六进制(互相转换)
- 十进制–任意进制
以75.3为例(整数小数分开)
2. 真值和机器数
机器数:一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号,正数为0,负数为1
比如:十进制的数+3,计算机字长为8位,转换成二进制就是00000011,如果是-3,就是10000011.那么这里的00000011和10000011就是机器数
真值:因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面有
符号数10000011,其4最高位1代表负,其真正数值是-3而不是形式值131(10000011转换成十进制等于131).所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。
例:00000001的真值为+1,10000001的真值为-1
2.1.2BCD码
-
分类
-
关于8421码的计算问题
由于没有在映射表中,所以为了符合8421码的定义,我们采取+6的方法
因为四位二进制数表示的范围0-15,而8421码10-15没有定义,所以我们加6,直接让数进一位,留下的就是个位。所以1101(13)+0110(6)=10011,此时我们只需要在前面补3个0得到0001 0011即13(符合8421码的定义) -
余3码
在8421的基础上+3即可(+0011) -
2421码
由于5可以用0101和1011同时表示,会由歧义,所以我们规定用2421码表示0-4时,最高位为0,表示5-9时,最高位为1
2.1.3字符与字符串
-
ASCII码表
32-126为可印刷字符,其余为通信、控制字符
-
汉字的表示和编码
注意加20H和80H 的原因
20H,因为区位码范围为(0-93,0-93),所以如果传入的0-31里面的任意一个,会让计算机误认为是控制或者通信字符,所以为了避免这些,要加32,即20H,加上20H后,如果要输入汉字的话,还要再加80H,原因是,如果不加,当你传入一个字节后,如果在范围0-128中,计算机之际会转换成ASCII中的英文字符,所以要加128,80H告诉计算机:别急,我后面还有一个字节,两个一起来表示汉字的。 -
字符串的存储
只有英文字符的
带有中文字符的
2.1.4奇偶校验码
- 校验原理简介
当码距为1时,有一位二进制发生了变化,就会转换为另一种状态,使计算机无法检验出来
当码距为2时,有一位二进制发生了变化,就会转换为非法状态,就可以检验出来
所以,码距=1,无检错能力,码距=2,有检错能力(奇偶校验码),码距>=3,设计合理,有检错纠错能力(海明码) - 奇偶检验码
在有效信息再加上一个二进制位(校验位)组成校验码,校验位的取值将使整个校验码中的1得到个数为奇数或偶数,所以分为奇校验码和偶校验码
Notes:
- 注意偶校验的硬件实现方法
- 奇偶校验码只能发现奇数位的出错情况
2.1.5海明码
- 海明校验码的思路简介
- 海明码的校验步骤
补充:
2.1.6循环冗余校验码(CRC)
- 校验码步骤
补充:
2.2.1定点数的表示
-
无符号数的表示
-
有符号数的定点表示
-
原码
-
反码
-
补码(注意取值范围,0很特殊)
-
移码
-
总结