掌握核心:二进制运算与多进制数相互转换

常用进制数

十进制(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的结果

掌握核心:二进制运算与多进制数相互转换_第1张图片

减法规则:

  • 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的结果

掌握核心:二进制运算与多进制数相互转换_第2张图片

在这1101-1011示例中,从最低位开始逐位相减:

  1. 最低位:1 - 1 = 0,无需借位。
  2. 第二低位:0 - 1,需要向高位借位。但在计算机中,我们采用补码运算,所以这里实际上是将0变为1(因为0的补码为1),同时把高位的1变为0。
  3. 高低位:1 - 0 = 1,无需借位。但因第二低位的借位,所以值变为0
  4. 最高位(符号位):在实际计算中,符号位不参与常规的加减运算,它用于表示正负号。

比特位逻辑运算规则

逻辑与运算(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)运算的结果

掌握核心:二进制运算与多进制数相互转换_第3张图片

不同进制数之间的转换

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进行转换
    掌握核心:二进制运算与多进制数相互转换_第4张图片

由这得出:121D=1111001B

  • 对小数部分0.3125进行转换、

掌握核心:二进制运算与多进制数相互转换_第5张图片

由该过程得出,0.3125D=0.0101B

将整数和小数部分组合起来得到:121.3125D=1111001.0101B

示例:将十进制数121.3125转换为八进制数
  • 首先,先对整数部分121进行转换

掌握核心:二进制运算与多进制数相互转换_第6张图片

由以上过程得出,121D=171Q

  • 然后,对小数部分0.3125进行转换

掌握核心:二进制运算与多进制数相互转换_第7张图片

由以上过程得出:0.3125D=0.24Q

将整数部分和小数部分整合起来得出:121.3125D=171.24Q

示例:将十进制数121.3125转换为十六进制
  • 首先,先对整数部分121进行转换
    掌握核心:二进制运算与多进制数相互转换_第8张图片

由以上过程中得出:121D=79H

  • 然后,对小数部分0.3125进行转换

掌握核心:二进制运算与多进制数相互转换_第9张图片

由以上过程得出: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

你可能感兴趣的:(计算机基础,计算机外设,计算机网络)