二进制 八进制和十六进制转换十进制

二进制转十进制

二进制转十进制


做法

二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。

步骤  [1]

从最后一位开始算,依次列为第0、1、2...位第n位的数(0或1)乘以2的n次方得到的结果相加就是答案

例如:01101011.转十进制: 第0位:1乘2的0次方=1 1乘2的1次方=2 0乘2的2次方=0 1乘2的3次方=8 0乘2的4次方=0 1乘2的5次方=32 1乘2的6次方=64 0乘2的7次方=0 然后:1+2+0+8+0+32+64+0=107.

二进制01101011=十进制107.


八进制转换十进制

八进制化为十进制

例:将八进制数12.6转换成十进制数

(12.6)8=1×8^1+2×8^0+6×8^-1=(10.75)10

       


十六进制转换十进制

16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这六个字母来分别表示10,11,12,13,14,15。字母不区分大小写。

十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……

所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。

假设有一个十六进数 2AF5

直接计算就是:

5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997

也可以用竖式表示:

第0位: 5 * 16^0 = 5

第1位: F * 16^1 = 240

第2位: A * 16^2 = 2560

第3位: 2 * 16^3 = 8192

-------------------------------

10997

现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。

假设有人问你,十进数 1234 为什么是 一千二百三十四?你尽可以给他这么一个算式:

1234 = 1 * 10^3 + 2 * 10^2 + 3 * 10^1 + 4 * 10^0

十六进制互相转换

首先我们来看一个二进制数: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 + 0 + 2 + 1 = 11= B

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

1001 = 8 + 0 + 0 + 1 =9 =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 + 4 + 1,即:1101。

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

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

比如,十进制数 1234转换成二制数,如果要一直除以2,直接得到2进制数,需要计算较多次数。所以我们可以先除以16,得到16进制数:

被除数 计算过程 商 余数

1234 1234/16 77 2

77 77/16 4 13 (D)

4 4/16 0 4

结果16进制为:0x4D2

然后我们可直接写出0x4D2的二进制形式:

0100

1101

0010

其中对映关系为:

0100 -- 4

1101 -- D

0010 -- 2

同样,如果一个二进制数很长,我们需要将它转换成10进制数时,除了前面学过的方法是,我们还可以先将这个二进制转换成16进制,然后再转换为10进制。

下面举例一个int类型的二进制数:

01101101

11100101

10101111

00011011

我们按四位一组转换为16进制:6D E5 AF 1B

十进制转十六进制

余数定理分解,例如将487710转成十六进制:

[1]

487710÷16=30481....14(E)

30481÷16=1905....1

1905÷16=119....1

119÷16=7....7

7÷16=0....7

这样就计到487710(10)=7711E(16)





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
二进制八进制:使用 PHP 内置函数 decoct(),将二进制数转换为十进制数,再将十进制数转换为八进制数。例如,将二进制数 11010 转换为八进制数,步骤如下: 1. 将二进制数 11010 转换为十进制数,使用 bindec() 函数,得到十进制数 26。 2. 将十进制数 26 转换为八进制数,使用 decoct() 函数,得到八进制数 32。 因此,二进制数 11010 转换为八进制数为 32。 二进制转十六进制:使用 PHP 内置函数 dechex(),将二进制数转换为十进制数,再将十进制数转换为十六进制数。例如,将二进制数 11010 转换为十六进制数,步骤如下: 1. 将二进制数 11010 转换为十进制数,使用 bindec() 函数,得到十进制数 26。 2. 将十进制数 26 转换为十六进制数,使用 dechex() 函数,得到十六进制数 1A。 因此,二进制数 11010 转换为十六进制数为 1A。 八进制二进制:使用 PHP 内置函数 decoct(),将八进制数转换为十进制数,再将十进制数转换为二进制数。例如,将八进制数 32 转换为二进制数,步骤如下: 1. 将八进制数 32 转换为十进制数,使用 octdec() 函数,得到十进制数 26。 2. 将十进制数 26 转换为二进制数,使用 decbin() 函数,得到二进制数 11010。 因此,八进制数 32 转换为二进制数为 11010。 八进制十进制:使用 PHP 内置函数 octdec(),将八进制数转换为十进制数。例如,将八进制数 32 转换为十进制数,直接使用 octdec() 函数,得到十进制数 26。因此,八进制数 32 转换为十进制数为 26。 八进制转十六进制:使用 PHP 内置函数 decoct(),将八进制数转换为十进制数,再将十进制数转换为十六进制数。例如,将八进制数 32 转换为十六进制数,步骤如下: 1. 将八进制数 32 转换为十进制数,使用 octdec() 函数,得到十进制数 26。 2. 将十进制数 26 转换为十六进制数,使用 dechex() 函数,得到十六进制数 1A。 因此,八进制数 32 转换为十六进制数为 1A。 十六进制转二进制:使用 PHP 内置函数 hexdec(),将十六进制数转换为十进制数,再将十进制数转换为二进制数。例如,将十六进制数 1A 转换为二进制数,步骤如下: 1. 将十六进制数 1A 转换为十进制数,使用 hexdec() 函数,得到十进制数 26。 2. 将十进制数 26 转换为二进制数,使用 decbin() 函数,得到二进制数 11010。 因此,十六进制数 1A 转换为二进制数为 11010。 十六进制转八进制:使用 PHP 内置函数 hexdec(),将十六进制数转换为十进制数,再将十进制数转换为八进制数。例如,将十六进制数 1A 转换为八进制数,步骤如下: 1. 将十六进制数 1A 转换为十进制数,使用 hexdec() 函数,得到十进制数 26。 2. 将十进制数 26 转换为八进制数,使用 decoct() 函数,得到八进制数 32。 因此,十六进制数 1A 转换为八进制数为 32。 十六进制转十进制:使用 PHP 内置函数 hexdec(),将十六进制数转换为十进制数。例如,将十六进制数 1A 转换为十进制数,直接使用 hexdec() 函数,得到十进制数 26。因此,十六进制数 1A 转换为十进制数为 26。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值