二进制、八进制、十进制、十六进制之间的转换

心已赠人 2022-09-29 10:56 377阅读 0赞

二进制、八进制、十进制、十六进制之间的转换

进制也就是进制位,对于接触过电脑的人来说应该都不陌生,我们常用的进制包括:二进制、八进制、十进制与十六进制,它们之间区别在于数运算时是逢几进一位。比如二进制是逢2进一位,十进制也就是我们常用的0-9是逢10进一位。具体的用法小编今天不着重解释,主要针对他们之间的转换加以讨论(今天只讲整数)。

二进制、八进制、十进制、十六进制之间的转换

二进制与十进制之间的转换

  1. 1

    十进制转二进制

    方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。

    (具体用法如下图)

    二进制、八进制、十进制、十六进制之间的转换

  2. 2

    二进制转十进制

    方法为:把二进制数按权展开、相加即得十进制数。

    (具体用法如下图)

    二进制、八进制、十进制、十六进制之间的转换

#

  1. 1

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

    二进制转八进制

    方法为:3位二进制数按权展开相加得到1位八进制数。(注意事项,3位二进制转成八进制是从右到左开始转换,不足时补0)。

    (具体用法如下图)

    二进制、八进制、十进制、十六进制之间的转换

  2. 2

    八进制转成二进制

    方法为:八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。

    (具体用法如下图)

    二进制、八进制、十进制、十六进制之间的转换

    END

#

#

#

#

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

  1. 1

    二进制转十六进制

    方法为:与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)。

    (具体用法如下图)

    二进制、八进制、十进制、十六进制之间的转换

  2. 2

    十六进制转二进制

    方法为:十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。

    (具体用法如下图)

    二进制、八进制、十进制、十六进制之间的转换

    END

#

#

#

#

#

十进制与八进制与十六进制之间的转换

  1. 1

    十进制转八进制或者十六进制有两种方法

    第一:间接法—把十进制转成二进制,然后再由二进制转成八进制或者十六进制。这里不再做图片用法解释。

  2. 2

    第二:直接法—把十进制转八进制或者十六进制按照除8或者16取余,直到商为0为止。

    (具体用法如下图)

    二进制、八进制、十进制、十六进制之间的转换

  3. 3

    八进制或者十六进制转成十进制

    方法为:把八进制、十六进制数按权展开、相加即得十进制数。

    (具体用法如下图)

    二进制、八进制、十进制、十六进制之间的转换

    END

#

#

#

#

#

十六进制与八进制之间的转换

2进制和16进制转换技巧

不过这二者的转换却不用计算,每个C,C++程序员都能做到看见二进制数,直接就能转换为十六进制数,反之亦然。

我们也一样,只要学完这一小节,就能做到。

首先我们来看一个二进制数:1111,它是多少呢?

你可能还要这样计算:1 * 2^0 + 1 * 2^1 + 1 * 2^2 + 1 * 2^3 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。

然而,由于1111才4位,所以我们必须直接记住它每一位的权值,并且是从高位往低位记,:8、4、2、1。即,最高位的权值为2^3 = 8,然后依次是 2^2 = 4,2^1=2, 2^0 = 1。

记住8421,对于任意一个4位的二进制数,我们都可以很快算出它对应的10进制值。

下面列出四位二进制数 xxxx 所有可能的值(中间略过部分)

仅4位的2进制数 快速计算方法 十进制值 十六进值

1111 = 8 + 4 + 2 + 1 = 15 F

1110 = 8 + 4 + 2 + 0 = 14 E

1101 = 8 + 4 + 0 + 1 = 13 D

1100 = 8 + 4 + 0 + 0 = 12 C

1011 = 8 + 4 + 0 + 1 = 11 B

1010 = 8 + 0 + 2 + 0 = 10 A

1001 = 8 + 0 + 0 + 1 = 10 9

….

0001 = 0 + 0 + 0 + 1 = 1 1

0000 = 0 + 0 + 0 + 0 = 0 0

二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。

如(上行为二制数,下面为对应的十六进制):

1111 1101 , 1010 0101 , 1001 1011

F D , A 5 , 9 B

反过来,当我们看到 FD时,如何迅速将它转换为二进制数呢?

先转换F:

看到F,我们需知道它是15(可能你还不熟悉A~F这五个数),然后15如何用8421凑呢?应该是8 + 4 + 2 + 1,所以四位全为1 :1111。

接着转换 D:

看到D,知道它是13,13如何用8421凑呢?应该是:8 + 2 + 1,即:1011。

所以,FD转换为二进制数,为: 1111 1011

由于十六进制转换成二进制相当直接,所以,我们需要将一个十进制数转换成2进制数时,也可以先转换成16进制,然后再转换成2进制。

10进制小数和2进制小数转换


整数部分从低位至高位1,2,4,8,16,32……

小数部分从小数点位置开始:1/2,1/4,1/8,1/16….

即:1010.1011=8+2+1/2+1/8+1/16

(“^”代表幂)

1101.0111=1*2^3+1*2^2+0*2^1+1*2^0+0*2^(-1)+1*2^(-2)+1*2^(-3)+1*2^(-4)

小数部分是如果小数点后第一位为1的话就加上0.5(即1/2),第二位加上0.25(1/4),第三位加上0.125(1/8),接着就是1/16,1/32,1/64…..。无论算出多少都是正确的。你也可以后过来算,你算了十进制数后,就拿小数部分*2,

如7/16=0.4375

0.4375*2=0.875 整数部分为0 即当前二进制数值为:0.0

0.875*2=1.75 整数部分为1 即当前二进制数值为:0.01 去掉1后继续运算。

0.75*2=1.5 整数部分为1 即当前二进制数值为:0.011 去掉1后继续运算。

0.5*2=1.0 整数部分为1 即当前二进制数值为:0.0111 去掉1后为0,运算结束。

0.4375的二进制数为:0.0111

十进制 = 16进制的整数部分 . 16进制的小数部分

将二进制101011.101转换为十六进制为2B.A

将十六进制6E.2转换为二进制为01101110.0010即1101110.001

发表评论

表情:
评论列表 (有 0 条评论,377人围观)

还没有评论,来说两句吧...

相关阅读