常用进制数
十进制(D)
十进制是人们日常生活用的最多也最熟悉的一种进位计数制,由0、1、2、3、4、5、6、7、8、9这十个数码组成,基数为10。
十进制的特点是:逢十进一,借一当十
二进制(B)
二进制由0和1两个数码组成,基数为2.
二进制的特点是:逢二进一,借一当二。
其数值的每一位只能取0或1这两个数码之一。
对于十进制而言,1+1=2,而对于二进制来说,1+1=(10)2
八进制(Q或O)
八进制就是基数为8,由0、1、2、3、4、5、6、7这八个数码组成.
八进制的特点是:逢八进一,借一当八
如果某位为7时,再加上1,则向前进位1,而本位变成0
十六进制(H)
十六进制由0、1、2、3、4、5、6、7、8、9、A(10)、B(11)、C(12)、D(13)、E(14)、F(15)这十六个数码组成,基数为16。在十六进制中的10~15这六个数用英文字母A~F表示,用这来区分于十进制的数
十六进制的特点:逢十六进一,借一当十六
数制有两种表示方法
-
数字用括号括起来,再加上数制的下标,如(12)2,(110)8、(120)10、(568)16
-
用进位制的字母符号B(二进制)、Q或O(八进制)、D(十进制)、H(十六进制)来表示,如110D就表示十进制数110,而不是二进制
进制之间的关系如下
十进制 | 二进制 | 八进制 | 十六进制 |
---|---|---|---|
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
2 | 10 | 2 | 2 |
3 | 11 | 3 | 3 |
4 | 100 | 4 | 4 |
5 | 101 | 5 | 5 |
6 | 110 | 6 | 6 |
7 | 111 | 7 | 7 |
8 | 1000 | 10 | 8 |
9 | 1001 | 11 | 9 |
10 | 1010 | 12 | A |
11 | 1011 | 13 | B |
12 | 1100 | 14 | C |
13 | 1101 | 15 | D |
14 | 1110 | 16 | E |
15 | 1111 | 17 | F |
二进制数的运算规则
在计算机中,采用二进制数可以非常方便地实现各种算术运算和逻辑运算。关于这优点已经在前面已经介绍过
算术运算规则
加法规则:
- 0+0=0:任何位上两个0相加结果为0
- 0+1=1;1+0=1:任何位上0与1相加结果为1
- 1+1=10(实际上是十进制中的2):当两个1在同一个位置相加时,会产生一个进位(Carry),向高位有进位。相当于十进制中个位满10向更高位进1,但在二进制中则是满2产生一个进位并把当前位的结果变为0再向左移一位进1
示例:分别计算二进制数1101+1001和1111+1011的结果
减法规则:
- 0-0=0:任何位上0减去0结果为0
- 1-0=1:任何位上1减去0结果仍为1
- 1-1=0:任何位上1减去1结果为0
- 10-1=1:这里意味着二进制的2(即10)减去1(即01),无需借位,结果为1
- 0-1=1(向高位借位后变为补码形式):在二进制中,直接用0减去1是不可能的,因此需要从高位借位。实际上,在计算机系统中,为了简化负数表示,通常采用补码(Two’s Complement)表示法。当发生这种情况时,不仅当前位置会被翻转(0变成1),而且所有更高位置也会连续借位直到找到一个1可以借或者达到最高位(符号位)。对于单个位的情况,假设允许借位的话,它会从高位借来1,然后进行减法,得到 1 - 1 = 0,
示例:分别计算二进制数1101—1001和1101—1011的结果
在这1101-1011示例中,从最低位开始逐位相减:
- 最低位:1 - 1 = 0,无需借位。
- 第二低位:0 - 1,需要向高位借位。但在计算机中,我们采用补码运算,所以这里实际上是将0变为1(因为0的补码为1),同时把高位的1变为0。
- 高低位:1 - 0 = 1,无需借位。但因第二低位的借位,所以值变为0
- 最高位(符号位):在实际计算中,符号位不参与常规的加减运算,它用于表示正负号。
比特位逻辑运算规则
逻辑与运算(AND):0 Λ 0= 0;0 Λ 1= 0;1 Λ 0 = 0;1 Λ 1 = 1
X | Y | X AND Y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
逻辑与运算规则:有0则为0
逻辑或运算(OR):0 ∨ 0 = 0;0 ∨ 1 = 1;1 ∨ 0 = 1;1 ∨ 1=1
X | Y | X OR Y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
逻辑或运算规则:有1则为1
逻辑非运算(NOT):
X | NOT X |
---|---|
1 | 0 |
0 | 1 |
逻辑非运算规则:0变1,1变0
逻辑异或运算(XOR): 0 ⊕ 0 =0; 0 ⊕ 1 = 1;1 ⊕ 0 = 1; 1 ⊕ 1 =0;
X | Y | X XOR Y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
逻辑异或运算规则:相同为0,不同为1
示例:分别计算二进制数1101100和1110110进行与(AND)、或(OR)运算的结果
示例:计算二进制数1101100和1110110进行异或(XOR)运算的结果
不同进制数之间的转换
r进制数转换为十进制数
方法:位权展开求和。
先按位权展开,然后按照十进制运算规则进行求和计算,其结果就是转换后对应的十进制数。
(1001.10)2=1*23+0*22+0*21+1*20+1*2-1+0*2-2=9.5
(230.1)8=2*82+3*81+0*80+1*8-1=19
(12A.5)16=1*162+2*161+10*160+5*16-1=298.3125
十进制数转换为r进制数
十进制数的整数部分和小数部分在转换时需做不同的计算,分别求值后再组合
- 整数部分采用除r取余法,即逐次除以r,直至商为0,得出的余数倒排,即为r进制各位的数码
- 小数部分采用乘r取整法,即逐次乘以r,从每次乘积的整数部分得到r进制数各位的数码,直至小数部分为0,或者满足转换精度要求为止
示例:将十进制数121.3125转换为二进制数
- 首先,先对整数部分121进行转换
由这得出:121D=1111001B
- 对小数部分0.3125进行转换、
由该过程得出,0.3125D=0.0101B
将整数和小数部分组合起来得到:121.3125D=1111001.0101B
示例:将十进制数121.3125转换为八进制数
- 首先,先对整数部分121进行转换
由以上过程得出,121D=171Q
- 然后,对小数部分0.3125进行转换
由以上过程得出:0.3125D=0.24Q
将整数部分和小数部分整合起来得出:121.3125D=171.24Q
示例:将十进制数121.3125转换为十六进制
- 首先,先对整数部分121进行转换
由以上过程中得出:121D=79H
- 然后,对小数部分0.3125进行转换
由以上过程得出:0.3125D=0.5H
将整数部分和小数部分整合起来得出:121.3125D=79.5H
二进制数、八进制数、十六进制数的相互转换
由于二进制、八进制、十六进制之间存在特殊关系:23=81,24=161,即1位八进制数相当于3位二进制数,1位十六进制数相当于4位二进制数,因此通过这关系可以得出以下
二进制数转换成八进制数的方法是:
- 将二进制数从小数点开始,对二进制整数部分向左每3位分成一组,不足3位时向高位补0凑成3位;
- 对二进制小数部分向右每3位分成一组,不足3位的向低位补0凑成3位。每一组中的3位二进制数,分别转换成八进制数码中对应的一个数字,全部连接起来即可。
示例:把二进制数10111101.110转换为八进制数
二进制3位分组 | 010 | 111 | 101. | 110 |
---|---|---|---|---|
转换为八进制数 | 2 | 7 | 5 | 6 |
从这可以得出:10111101.110B=275.6Q
示例:把八进制数52.3转换为二进制数
把每个八进制数字改写成等值的3位二进制数,且保持高低位的次序不变
八进制分组 | 5 | 2. | 3 |
---|---|---|---|
转换为二进制数 | 101 | 010 | 011 |
因此52.3Q=101010.011B
二进制转换为十六进制的方法是:
- 将二进制数从小数点开始,对二进制整数部分向左每4位分成一组,不足4位时向高位补0凑成4位;
- 对二进制小数部分向右从高位向低位每4位分成一组,不足4位的向低位补0凑成4位。每一组中的4位二进制数,分别转换成十六进制数码中对应的一个数字,全部连接起来即可。
示例:将二进制数10110001.101转换为十六进制数
二进制4位分组 | 1011 | 0001. | 1010 |
---|---|---|---|
转换为十六进制数 | B | 1 | A |
从上面得出:10110001.101B=B1.AH
示例:把十六进制数A2C.8转换为二进制数
把每个十六进制数字改写成等值的4位二进制数,且保持高低位的次序不变
十六进制数 | A | 2 | C. | 8 |
---|---|---|---|---|
转换为二进制 | 1010 | 0010 | 1100 | 1000 |
因此从上面得出:A2C.8=101000101100.1000