1.1 进位计数制

 1.1 进位计数制

二进制数
0000
0001
0010
0011
0100
0101
0110
0111
十进制数
0
1
2
3
4
5
6
7
十六进制数
0
1
2
3
4
5
6
7
二进制数
1000
1001
1010
1011
1100
1101
1110
1111
十进制数
8
9
10
11
12
13
14
15
十六进制数
8
9
A
B
C
D
E
F

进位计数制
数制表示
基 数
数 码
十六进制数Hexadecimal
H
16
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
十进制数Decimal
D
10
0,1,2,3,4,5,6,7,8,9
八进制数Octal
O
8
0,1,2,3,4,5,6,7
二进制数Binary
B
2
0,1

  进位计数制是一种计数的方法,常用的有十进制计数法、二进制计数法、十六进制计数法、八进制计数法等。

十进制数:基数为10,逢10进1。二进制数:基数为2,逢2进1。十六进制数:基数为16,逢16进1。
  有些时候用二进制表示数不太方便(代码很长),所以经常采用十六进制表示法, 4位二进制数可用1位十六进制数来表示。

  十六进制数与二进制数、十进制数的对应关系如下:

1.2 不同基数的数之间的转换

1.2.1 二进制数和十进制数之间的转换

1.2.1.1 二进制数转换为十进制数

  各位二进制数与其对应权值的乘积之和即为与该二进制数相对应的十进制数。

 1.2.1.2 十进制数转换为二进制数
  降幂法:首先写出要转换的十进制数,其次写出所有小于此数的各位二进制权值,然后用要转换的十进制数减去与它最接近的二进制权值,如够减则减去并在相应位记以1;如不够减则在相应位记以0并跳过此位;如此不断重复,直到该数为0为止。
除法:把要转换的十进制数的整数部分不断除以2,并记下余数,直到商为0为止。

1.2.2 二进制数和十六进制数之间的转换
 

    由于十六进制数的基数是2的幂,所以这两种数制之间的转换十分容易。

1.2.2 二进制数和十六进制数之间的转换
 

  由于十六进制数的基数是2的幂,所以这两种数制之间的转换十分容易。
  对一个二进制数,将它从低位到高位每4位组成一组,每组用一个十六进制数来表示。
  对一个十六进制数,将它的每一位用4位二进制数表示。

                   例: 0011  0101  1011 1111
                        3   5   B   F
                     即 0011010110111111B = 35BFH

                   例: A    1    9   C
                       1010  0001  1001 1100
                     即 A19CH = 1010000110011100B

1.2.3 十六进制数和十进制数之间的转换

1.2.3.1 十六进制数转换为十进制数

 
  各位十六进制数与其对应权值的乘积之和即为与该十六进制数相对应的十进制数。
1.2.3.2 十进制数转换为十六进制数

  
转换方法与十进制转换为二进制的方法类似。
  降幂法:首先写出要转换的十进制数,其次写出小于该数的十六进制权值,然后找出该数中包含多少个最接近它的权值的倍数,这一倍数即对应位的值,用原数减去此倍数与相应位权值的乘积得到一个差值,再用此差值去找低一位的权值的倍数,如此反复直到差值为0为止。

 除法:把要转换的十进制数的整数部分不断除以16,并记下余数,直到商为0为止。

1.3 二进制数和十六进制数的运算
 
  
   包括算术运算和逻辑运算。

1.3.1 算术运算

    二进制数的运算:
              加法规则:         乘法规则:
              0 + 0 = 0          0 0 = 0
              0 + 1 = 1          0 1 = 0
              1 + 0 = 1          1 0 = 0
              1 + 1 = 0(进位1)      1 1 = 1

  十六进制数的运算:十六进制的加、减、乘、除与十进制类似。
                  

1.3.2 逻辑运算

  所有的逻辑运算都是按位操作的。
  
  “与”运算(AND)
                       

  “或”运算(OR)
                       

  “非”运算(NOT)
                      

  “异或”运算(XOR)
 
               

  例:X=00FFH,Y=5555H,Z1=XY,Z2=XY,Z3=,Z4=XY,求Z1、Z2、Z3、Z4的值。

     解:X = 0000 0000 1111 1111
       Y = 0101 0101 0101 0101
       Z1= 0000 0000 0101 0101 = 0055H
       Z2= 0101 0101 1111 1111 = 55FFH
       Z3= 1111 1111 0000 0000 = FF00H
       Z4= 0101 0101 1010 1010 = 55AAH

 1.4 数和字符的表示

1.4.1 计算机中数的表示
1.4.1.1 补码表示法

  计算机中的数和数的符号都是用二进制表示的,这样的数称为机器数。一般用最高有效位来表示数的符号,正数用0表示,负数用1表示。
  机器数可用不同的码制来表示,常用的有原码、补码和反码表示法。

  机器字长n是指参与运算的数的基本位数,标志着计算精度,一般是字节的整数倍,有8位、16位、32位等。

  原码表示法:符号 + 绝对值

 负数的补码表示:相应的正数按位求反,末位加1即为该负数的补码表示
  
  求负数补码表示的方法:
  (1)写出与该负数相对应的正数的补码
  (2)按位求反
  (3)末位加一

 符号扩展:是指一个数从位数较少扩展到位数较多,如从8位扩展到16位,或从16位扩展到32位。

  对于用补码表示的数,正数的符号扩展在前面补0,负数的符号扩展在前面补1,假设机器字长为16位,[+46]补码 = 002EH,[-46]补码 = FFD2H。

【本章小结】

  1. 数制
  计算机中的数字电路用电压的高低(或通断)表示两种状态0、1,所以计算机内部的所有信息都是采用二进制计数法。在书写程序时,常采用二进制的短格式表示法:十六进制。

  2. 数制之间的转换
  二进制数和十六进制的转换是很直接的。一个二进制数,从低位到高位,每4位用一个数字来表示,就是相应的十六进制数,反之一个十六进制数中的每一位用4位二进制数表示,就转换成相应的二进制数。

  十六进制数的各位数与其对应权值(16i)的乘积之和即为其对应的是十进制数。十进制数转换为十六进制数可使用降幂法和除法。

  3. 运算
  二进制数的算术运算规则是逢二进一,十六进制数的运算规则是逢十六进一。
基本逻辑运算包括与(AND)、或(OR)、非(NOT)、异或(XOR),0、1代码为逻辑变量。

  4. 数和字符的表示
  计算机中的数是用二进制来表示,其最高有效位表示数的正负号。整数采用补码表示法。对一个二进制数按位求反后在末位加1的运算称为求补运算。

  补码的加法规则是:[X+Y]=[X] +[Y]
  补码的减法规则是:[X-Y] =[X]+[-Y]
  计算机采用ASCII表示字符,每个字符占用一个字节。

【课后习题】

  1 用降幂法或除法将下列十进制数转换为二进制数和十六进制数:
(1)369
(2)10000
(3)4096
(4)32767

2 将下列二进制数转换为十六进制数和十进制数:
(1)101101
(2)10000000
(3)1111111111111111
(4)11111111

3 将下列十六进制数转换为二进制数和十进制数:
(1)FA
(2)5B
(3)FFFE
(4)1234

4 完成下列十六进制数的运算:
(1)3A+B7
(2)1234+AF
(3)ABCD-FE
(4)7AB×6F

5 下列各数均为十进制数,请用8位二进制补码计算下列各题,并用是十六进制数表示其运算结果。
(1)(―85)+76
(2)85+(―76)
(3)85―76
(4)85―(―76)
(5)(―85)―76
(6)―85―(―76)

6 下列各数为十六进制表示的8位二进制数,请说明当它们被看作是用补码表示的带符号数时,它们所表示的十进制数是什么?
(1)D8
(2)FF

7 当1. 6题的两数被看作是用补码表示的无符号数时,它们所表示的十进制数是什么?
(1)D8
(2)FF     

8 下列各数为十六进制表示的8位二进制数,请说明当它们被看作是用补码表示的数时,它们所表示的十进制数是什么?
(1)4F
(2)2B
(3)73
(4)59

9 当1. 8题的4个数被看作是字符的ASCII码时,它们所表示的字符是什么?
(1)4F
(2)2B
(3)73
(4)59

 

你可能感兴趣的:(1.1 进位计数制)