二进制、八进制、十六进制之间的关系

一、从十进制到二进制

    如果有人问:

    10+10=?

    您可能会不加思索地回答:“等于20。”这样的回答对不对呢?可以说对,也可以说不对,这要进行具体的分析。说对,是因为我们平时都是用十进制,也即用逢十进一的方法来进行计算的。但如果从下面即将介绍的二进制,即逢二进一的观点来看,那么,上述回答则是错的。

    我们的祖先,很早以前就创造了十进制,并将它作为计数的基础,这是因为人类有十个手指和十个脚趾这个天生的计算工具。几千年来,人类一直沿用十进制,这是因为在一般情况下,使用十进制比用其他进制要方便得多。

    但是,在日常生活中,并不是全都采用十进制来计数的。例如,一年有十二个月,这是十二进制;一小时等于六十分钟,一分钟等于六十秒,这是六十进制;一公尺等于三市尺,这是三进制;鞋、袜都是以双来计算的,一双等于两只,这是二进制。等等。

    计算机作为一种计算工具,采用哪一种进制计数呢?计算机是由大量的电子器件组成的,在这些电子器件中,电路的通和断、电位的高和低,用两种数字符号“1”和“0”分别表示,容易实现。二进制的运算法则很简单,加法法则四个,乘法法则四个,即:

      0+0=0,0+1=1,1+0=1,1+1=10;0×0=0,0×1=0,1×0=0,1×1=1

    考虑到运算简便、节省器件、容易实现、经济、可靠等因素,因此,在计算机内部通常用二进制代码来作为内部存储、传输和处理信息的计数方法。

    二、十进制

    十进制数计数的特点是“逢十进一”。为了表示十进制的某位数,需要10个数字0,1,2,3,4,5,6,7,8,9,就是说十进制的基数为10。

    在十进制数中,不同数位上的数字所表示的值是不相同的。例如在十进制数163和1267中,数字6都出现在十位数的位置上,因此,这两个数中的数字6的值都是60。通常,我们把某一固定位置上的计数单位叫做位权,例如:

         个位数的位权为100=1     (基数10的0次方)

         十位数的位权为101=10    (基数10的1次方)

         百位数的位权为102=10×10=10        (基数10的2次方)

         千位数的位权为103=10×10×10=1000  (基数10的3次方)

         ……

    由上述可见,在十进制计数中,各位上的位权值是基数10的若干次方。因此,任何一个十进制数都可以用横式展开式(位权表示法)来表示。例如:

          (7852)10=7×103+8×102+5×101+2×10 

    三、二进制

    1.二进制的计数

    所谓二进制计数,即每一位只有两个数,要么是0,要么是1,而且顾名思义,是“逢二进一”。因此,二进制计数的基数为2。 

    在十进制中,每个数可以用横式分解成个、十、百、千,……各位数之和相加,例如:

    (163)10=1×100+6×10+3×1

    同样,在二进制中,我们也可以用横式来分解二进制数。例如,二进制数1010等于十进制数的多少呢?

    (1010)2=          (1000)2          +      (10)2

                    对应十进制的2×2×2=8        对应十进制的2

           

    在这里,二进制的10包括两个二进制位,因为是逢二进一,每增加1位就乘以2。同样,二进制1000包括二进制的4个位,每增加1位也乘以2,所以,二进制的1000等于十进制的2×2×2=8。因此,二进制的1010等于十进制的10,即(1010)2=(10)10。按照这个原则,要表示十进制的10,需要有4个二进制位,它们之间的对应关系如表2-1所示。

   十进制数

     二进制数

       0

       1

       2

       3

       4

       5

       6

       7

       8

       9

      10

       0000

       0001

       0010

       0011

       0100

       0101

       0110

       0111

       1000

       1001

       1010

                    2-1  二进制的计数

 

   2.二进制数转换成十进制数

    与二进制计数类似,根据位权表示法,在二进制数中的每一位数字在不同位置上具有不同的值,而且二进制各位上的位权值是基数2的若干次方,例如:         

         20=1

         21=2×1=2

         22=2×2=4

         23=2×2×2=8

         ……

    将二进制数转换成十进制数的方法是:

    (1)把这个二进制数的最低一位(第0位)乘以2的0次方(即20),倒数第二位(第1位)乘以2的1次方(即21),……,一直到最高位(第n位)乘以2的n次方(即2n)。

    (2)最后将各项乘积相加,得到的结果就是二进制数所对应的十进制数。

    例2-1   把二进制数1101101转换成十进制数。

    解:(1101101)2 =1×26+1×25+0×24+1×23+1×22+0×21+1×2  

                             64 +32+0+8+4+0+1

                  =109

      (1101101)2 =(109)10

 

   3.十进制数转换成二进制数

    将十进制数转换成二进制数的方法是:

   (1)将这个十进制数除以2,得到一个商数和余数;再将得到的商数除以2,又得到一个商数和余数;这样一直继续下去,直到商数等于0为止。

   (2)第一次得到的余数是对应二进制数的最低位,最后一次得到的余数为对应的二进制数的最高位,其它余数依次类推。

    这种转换方法称为“除2反向取余法”。

    例2-2  把十进制数163转换成二进制数。

    解:用竖式:

    然后按从高位到低位顺序排列取其余数,便为这个十进制数所对应的二进制数。即(163)10=(10100011)2

    二进制数,也可以用英文字母B来表示,例如(10100011)2=10100011B

    我们可以将这个二进制数转换成十进制来验算。

      (10100011)2=1×27+1×25+1×21+1×20=(163)10

    例2-3  将十进制1023转换成二进制数。

解:

    

      (1023)10=(1111111111)2

    这个例子说明,用十位数二进制,就能表示最大值可到1023的十进制数,也即能表示0~1023共1024个十进制数。这就解答了前面提到的为什么计算机用二进制作为数的最基本单位比用十进制作为数的最基本单位要更加节省元件的问题。

    四、八进制

    1.八进制的计数

    在计算机中,所有的信息都是以二进制的方式来加以储存和运算的。但是,二进制数位数太多,冗长难记,所以人们常常将它写成八进制和十六进制的方式。

    在八进制计数中,为了表示八进制的某位数,需要8个数字0,1,2,3,4,5,6,7。因此,八进制的基数为8,它的计数特点是“逢八进一”。

 

   2.八进制数转换成十进制数

    将八进制数转换成十进制数,与二进制数转换成十制进制数类似,可以用横式展开式(位权表示法)来完成。

    例2-4  将八进制数653转换成十进制数。

    解:(653)8 =6×82+5×81+3×80

                       384+40+3

              =427

      (653)8=(427)10

 

   3.十进制数转换成八进制数

    将十进制数转换成八进制数,与十进制数转换成二制进制数类似,可以用“除8反向取余法”来完成。

    例2-5  把十进制数427转换成八进制数。

    解:用竖式:

    然后按从高位到低位顺序排列取其余数,便为这个十进制数所对应的八进制数。也即(427)10=(653)8

    八进制数,也可以用英文字母Q来表示,例如(653)8=653Q

 

    五、十六进制

    1.十六进制的计数

    十六进制,顾名思义是逢十六进一,它在计算机上的作用,是用来缩短冗长的二进制数,以便于阅读和使用。在计算机中,十六进制常用来缩写二进制地址。十六进制的数除0~9以外,还用A、B、C、D、E、F等6个字母来对应表示十进制的10、11、12、13、14、15这六个数字。因此,十六进制的基数为16,它的计数特点是“逢十六进一”。

    表2-2列出了十进制、十六进制、八进制和二进制的计数。

   十进制数

 十六进制数

  八进制数

   二进制数

      0  

      1

      2

      3

      4

      5

      6

      7

      8

      9

     10

     11

     12

     13

     14

     15

     16   

      0  

      1

      2

      3

      4

      5

      6

      7

      8

      9

      A

      B

      C

      D

      E

      F

     10

      0  

      1

      2

      3

      4

      5

      6

      7

     10

     11

     12

     13

     14

     15

     16

     17

     20

     0000

     0001

     0010

     0011

     0100

     0101

     0110

     0111

     1000

     1001

     1010

     1011

     1100

     1101

     1110

     1111

    10000

 

   2.十六进制数转换成十进制数

    将十六进制数转换成十进制数,与二进制数转换成十制进制数类似,可以用横式展开式(位权表示法)来完成。

    例2-6  将十六进制数47A转换成十进制数。

    解:(47A)16=4×162+7×161+10×160

                       1024+112+10

              =1146

      (47A)16=(1146)10

    3.十进制数转换成十六进制数

    将十进制数转换成十六进制数,与十进制数转换成二制进制数类似,可以用“除16反向取余法”来完成。

    例2-7  把十进制数1146转换成十六进制数。

    解:用竖式:

    

    然后按从高位到低位顺序排列取其余数,便为这个十进制数所对应的十六进制数。也即(1146)10=(47A)16

    十六进制数,也可以用英文字母H来表示,例如(1146)10=47AH。

 

    六、 二进制、八进制、十六进制之间的关系

    1.二进制与八进制之间的转换

    由于8=2×2×2,即8=23。可知一位八进制数相当于3位二进制数。

    (1)二进制数转换成八进制数

    将一个二进制数转换成八进制数,只要把二进制数从右往左每三位计算出对应的一位八进制数(不足三位的,前面添加“0”补足三位)。

    例2-8  将二进制数11011010101转换成八进数。

    解:二进制数: 011    011    010    101

                                  

        八进制数:                

        ∴(11011010101)2=(3325)8

   (2)八进制数转换成二进制数

    将一个八进制数转换成二进制数,只要把每位八进制数用对应的三位二制数来代替。

    例2-9  将八进制数3675转换成二进制数。

    解: 八进制数:          

                             

         二进制数:  011   110  111  101

        ∴(3675)8=(11110111101)2

    在将八进制数转换成二进制数时,最后得到的二进制数最高位的“0”往往都可以去掉。

 

    2.二进制与十六进制之间的转换

    由于16=2×2×2×2,即16=24。因此,一位十六进制数相当于4位二进制数。

    (1)二进制数转换成十六进制数

    将一个二进制数转换成十六进制数的方法是:只要把二进制数从右往左每四位为一组计算出对应的一位十六进制数(不足四位的,前面添加“0”补足四位)。

    例2-10  将二进制数10011001111转换成十六进制数。

    解: 二进制数: 0100   1100  1111

                             

         十六进制数:4        

        ∴(10011001111)2=(4CF)16

   (2)十六进制数转换成二进制数

    将一位十六进制数转换成二进制数,只要把每位十六进制数用对应的四位二制数来代替。

    例2-11  将十六进数3B4C转换成二进制数。

    解:十六进制数:           

                                   

        二进制数:   0011 1011 0100 1100

        ∴(3B4C)16=(11101101001100)2

    在将十六进制数转换成二进制数时,最后得到的二进制数最高位的“0”往往都可以去掉。

    需要说明的是,表示一个数,如果是十进制数,则不必特别注明果是二、八、十六进制数,则要用下标或字母来说明。

 

 

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值