数制:
进位计数制:按进位的原则进行计数。
每种进位计数制中允许使用的数符总数称为基数或底数。
N进制:以N为基数的计数体制。
1.有N个数符:0~N-1
2.逢N进1
3.
![](https://img-blog.csdnimg.cn/20181209161934114.png)
左边为位置计数法(并列表示式)
右边为多项式表示法(按权展开法)
按权展开法可以将任意N进制数转化为10进制数
十进制:基数N=10,系数Ki=0~9,第i位的权N^i:10^i
(7642)10 = 7*10^3+6*10^2+4*10^1+2*10^0
二进制:基数N=2,系数Ki=0、1,第i位的权N^i:2^i
(101111)2 = 1*2^5+0*2^4+1*2^3+1*2^2+1*2^1+1*2^0=(47)10
二进制:基数N=8,系数Ki=0~8,第i位的权N^i:8^i
(1352)8 = 1*8^3+3*8^2+5*8^1+2*8^0=(746)10
十六进制:基数N=16,系数Ki=0~9,A,B,C,D,E,F,第i位的权N^i:16^i
(2EA)16 = 2*16^2+14*16^1+10*16^0=(746)10
数制转换:
任意N进制数转化为十进制数:按权展开法
十进制数转任意N进制数:整数部分:除N取余法 小数部分:乘N取整法
十进制转二进制:整数部分:除2取余法 小数部分:乘2取整法
注意:小数部分乘2取整的过程不一定能使最后乘积为0,因此转化值存在一定的误差
二进制数和八进制数、十六进制数之间的转化:
1.二进制数转八进制数、十六进制数:
小数点前:三(四)位为一组不足左补零转为八(十六)进制数
小数点后:三(四)位为一组不足右补零转为八(十六)进制数
(110101.011000111)2 = (110 101 . 011 000 111)2 = (6 5 . 3 0 7)8
(110101.011000111)2 = (0011 0101 . 0110 0011 1000)2 = (3 5 . 6 3 8)16
2.八进制数、十六进制数转二进制数:
八进制数转二进制数:1位变3位
十六进制数转二进制数:1位变4位
(2EA)16 =(0010 1110 1010)2
编码:
带符号数的编码:
在数字系统中,要处理的不仅有正数,还有负数。为了表示带符号的二进制数,在定点整数运算的情况下,通常以代码的最高位作为符号位,用0表示正,用1表示负,其余各位为数值位。代码的位数称为字长,它的数值称为真值。
原码:符号位+数值位
正数:0+数值位 负数:1+数值位
[+16]原 = 00010000 [-16]原 = 10010000
反码:正数反码与其原码相同,即符号位加数值位;负数反码是符号位为1,数值位各位取反。
[+16]原 = 00010000 [+16]反 = 00010000
[-16]原 = 10010000 [-16]反 = 11101111
补码:正数和0补码与其原码相同;负数补码是将其原码的符号位保持不变,对数值位逐位求反,然后在最低为加1。
定义:字长为n的整数N的补码
[N]补 = N 0 <= N < 2^(n-1)
2^n+N -2^(n-1) <= N < 0
[+16]原 = 00010000 [+16]反 = 00010000 [+16]补 = 00010000
[-16]原 = 10010000 [-16]反 = 11101111 [-16]补 = 11110000
原码、反码、补码所表示的数的取值范围:
原码:-(2^(n-1)-1)~+(2^(n-1)-1)
反码:-(2^(n-1)-1)~+(2^(n-1)-1)
补码:-2^(n-1)~+(2^(n-1)-1)
原码,反码都有两个0,而补码的0唯一
如果知道一个数的补码,可以用{[X]补}补 = [X]原 求其原码和真值。
如:4位字长的原码、反码其数值表示范围均为-7~+7,而补码的数值表示范围为-8~+7;
+0的原码、反码、补码均为0000,-0只有原码1000和反码1111,而没有补码;
-8只有补码1000,而没有原码和反码。
补码的运算:
[X+Y]补 = [X]补+[Y]补
[X-Y]补= [X]补+[-Y]补
补码相加时,符号位参与运算,若符号位右进位,则自动舍去。
根据[X+-Y]补的结果求出[X+-Y]原 进而求出X+-Y的结果。(别忘了这步)
BCD码(二-十进制编码):
BCD码是用4位二进制码的10种组合表示十进制数的0~9。
1.8421BCD码:它和自然的二进制码相似,各个位的权值为8.4.2.1,故称为有权BCD码。
它选用了四位二进制码中的前10组代码,即用0000~1001分别代表十进制数的0~9,余下的六组代码1010~1111不用。
2.5421BCD码和2421BCD码:它们均属于有权BCD码。这两种 BCD码的编码方案是不唯一的。如5421BCD中5可以用1000表示,也可用0101表示;2421BCD中6可用1100表示,也可用0110表示。2421BCD中0和9、1和8、2和7、3和6、40和5互为反码,因此称2421BCD有对9互补的特点。
3.余三码:是8421BCD码加3(0011)形成的,也具有对9互补的特点。
转换:直接按位(组)转化。
(3.6)10 = (0011.0110)8421BCD = (11.0110)8421BCD
(101 0001 0111 1001)8421BCD = (5179)10
可靠性编码:
1.格雷码:格雷码是一种典型的循环码。
循环码特点:1.相邻性:任意两个相邻码组间仅有一位的状态不同;
2.循环性:首尾两个码组也具有相邻性。
2.奇偶校验码
代码(或数据)在传输和处理过程中,有时会出现代码中的某一位由 0 错变成 1,或 1 变成 0。奇偶校验码由信息位和一位奇偶检验位两部分组成。
信息位:是位数不限的任一种二进制代码。
检验位:仅有一位,它可以放在信息位的前面,也可以放在信息位的后面。
奇校验(odd codes) :信息位与校验位1的个数之和奇数。
偶校验(odd codes) :信息位与校验位1的个数之和偶数。
ASCII码:
ASCII码即 “美国国家标准信息交换码” 的英文缩写,常用的有两种:
ASCII-7编码用7 位二进制编码表示一个字符,共可表示 128 个不同的字符。通常使用时在最高位添 0 凑成 8 位二进制编码,或根据实际情况将最高位用做校验位。
ASCII-8编码用 8 位二进制编码表示一个字符,共可表示 256 个不同的字符。