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

1.十进制转其他进制

1.1转二进制:

方法

使用除2取余法,即将十进制数不断除以2,并记录每次的余数,直到商为0。然后把所有余数从下往上读就是对应的二进制数。

例如:

我有一个数字:12345678

  1. 12345678 ÷ 2 = 6172839 ... 余数 0
  2. 6172839 ÷ 2 = 3086419 ... 余数 1
  3. 3086419 ÷ 2 = 1543209 ... 余数 1
  4. 1543209 ÷ 2 = 771604 ... 余数 1
  5. 771604 ÷ 2 = 385802 ... 余数 0
  6. 385802 ÷ 2 = 192901 ... 余数 0
  7. 192901 ÷ 2 = 96450 ... 余数 1
  8. 96450 ÷ 2 = 48225 ... 余数 0
  9. 48225 ÷ 2 = 24112 ... 余数 1
  10. 24112 ÷ 2 = 12056 ... 余数 0
  11. 12056 ÷ 2 = 6028 ... 余数 0
  12. 6028 ÷ 2 = 3014 ... 余数 0
  13. 3014 ÷ 2 = 1507 ... 余数 0
  14. 1507 ÷ 2 = 753 ... 余数 1
  15. 753 ÷ 2 = 376 ... 余数 1
  16. 376 ÷ 2 = 188 ... 余数 0
  17. 188 ÷ 2 = 94 ... 余数 0
  18. 94 ÷ 2 = 47 ... 余数 0
  19. 47 ÷ 2 = 23 ... 余数 1
  20. 23 ÷ 2 = 11 ... 余数 1
  21. 11 ÷ 2 = 5 ... 余数 1
  22. 5 ÷ 2 = 2 ... 余数 1
  23. 2 ÷ 2 = 1 ... 余数 0
  24. 1 ÷ 2 = 0 ... 余数 1

现在,我们将所有的余数从最后一个开始向上排列(即逆序),得到的结果就是该十进制数的二进制表示。

因此,12345678的二进制形式是:101111000101000000111010

1.2转八进制:

方法

方法与转二进制类似,只是这里采用的是除8取余法。

例如:

我有一个数字12345

  1. 12345 ÷ 8 = 1543 ... 余数 1
  2. 1543 ÷ 8 = 192 ... 余数 7
  3. 192 ÷ 8 = 24 ... 余数 0
  4. 24 ÷ 8 = 3 ... 余数 0
  5. 3 ÷ 8 = 0 ... 余数 3

现在我们将所有的余数从最后一个开始向上排列(即逆序),得到的结果就是该十进制数的八进制表示。

因此,12345的八进制形式是:30071

1.3转十六进制:

方法

同样采用除基取余的方法,不过这次除的是16。对于大于9的余数,我们用A(10), B(11), C(12), D(13), E(14), F(15)来表示。

例如:

我有一个数字12345

  1. 12345 ÷ 16 = 771 ... 余数 9
  2. 771 ÷ 16 = 48 ... 余数 3
  3. 48 ÷ 16 = 3 ... 余数 0
  4. 3 ÷ 16 = 0 ... 余数 3

现在我们将所有的余数从最后一个开始向上排列(即逆序),得到的结果就是该十进制数的十六进制表示。

因此,12345的十六进制形式是:3039

2.二进制转其他进制

2.1转十进制

方法

使用位权相加法。每个二进制位的值乘以其权重(从右到左,权重依次是2^0, 2^1, 2^2...),然后把所有这些值加起来.

示例

假设二进制数是 1101

1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 8 + 4 + 0 + 1 = 13 (十进制)

2.2转八进制

方法

由于23=823=8,可以将每三位二进制数直接转换成一个八进制数。如果二进制数不是3的倍数,可以在最左边补零。

示例

假设二进制数是 110101

分组:011 010 1

转换:011 -> 3, 010 -> 2, 1 -> 1 (补零后为 001 -> 1)

结果:321 (八进制)

2.3十六进制

方法

因为24=1624=16,可以将每四位二进制数直接转换成一个十六进制数。如果二进制数不是4的倍数,可以在最左边补零。

示例

假设二进制数是 110101

分组:0011 0101

转换:0011 -> 3, 0101 -> 5

结果:35 (十六进制)

3.八进制转其他进制

3.1转十进制

方法

使用位权相加法。每个八进制位的值乘以其权重(从右到左,权重依次是8^0, 8^1, 8^2...),然后把所有这些值加起来。

示例

假设八进制数是 307

3 * 8^2 + 0 * 8^1 + 7 * 8^0 = 3 * 64 + 0 * 8 + 7 * 1 = 192 + 0 + 7 = 199 (十进制)

3.2转二进制

方法

将每个八进制数字单独转化为三位二进制形式。如果需要,可以在最左边补零以确保每组都是三位。

示例

假设八进制数是 307

3 -> 011

0 -> 000

7 -> 111

结果:011 000 111 或者去掉前导零后 11000111 (二进制)

3.3十六进制

方法

通常先将八进制转换为二进制,然后再由二进制转换为十六进制。

步骤

将八进制转换为二进制。

将得到的二进制数按每四位一组分组(从右到左),不足四位时在最左边补零。

每组二进制数转换成相应的十六进制数。

示例

假设八进制数是 307

二进制形式:11000111(如上所示)

分组:0011 0001 1100(为了方便分组,在左侧补了两个零)

转换:0011 -> 3, 0001 -> 1, 1100 -> C

结果:31C (十六进制)

4.十六进制转其他进制

转换到十进制

对于任何一个十六进制数,我们可以通过每一位乘以其对应的权值然后求和来得到等价的十进制数。权值是从右向左递增的16的幂次。

例如:十六进制数 1A3 转换成十进制:

​1 * 16^2 + A (即10) * 16^1 + 3 * 16^0

= 1 * 256 + 10 * 16 + 3 * 1

= 256 + 160 + 3

= 419 ​

转换到二进制

由于16是2的幂(16 = 2^4),每个十六进制位可以直接转换为4位二进制数。我们可以根据下面的对应关系来进行转换:

  • 0 -> 0000
  • 1 -> 0001
  • 2 -> 0010
  • 3 -> 0011
  • 4 -> 0100
  • 5 -> 0101
  • 6 -> 0110
  • 7 -> 0111
  • 8 -> 1000
  • 9 -> 1001
  • A -> 1010
  • B -> 1011
  • C -> 1100
  • D -> 1101
  • E -> 1110
  • F -> 1111

例如:十六进制数 1A3 转换成二进制:

1 -> 0001

A -> 1010

3 -> 0011

组合起来就是 0001 1010 0011 或者去掉前导零后为 110100011

转换到八进制

转换到八进制稍微复杂一点,通常的做法是先将十六进制数转换成二进制,然后再从二进制转换到八进制。因为每三位二进制正好对应一位八进制。

  • 先将上面的二进制结果 110100011 按照三位一组分组(不足三位前面补零): 001 101 000 110
  • 然后每组转换成八进制:
    • 001 -> 1
    • 101 -> 5
    • 000 -> 0
    • 110 -> 6
  • 最终结果是 1506

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值