doc/notebook/docs/basic/math/进制转换.md

2.9 KiB
Raw Blame History

进制转换是计算机科学中的一个基本概念。不同的进制表示系统使用不同的基数例如二进制的基数是2十进制的基数是10来表示数字。以下是一些常见的进制及其转换方法

常见进制

  • 二进制Binary基数为2只使用数字 01
  • 八进制Octal基数为8使用数字 07
  • 十进制Decimal基数为10使用数字 09
  • 十六进制Hexadecimal基数为16使用数字 09 和字母 AF(或 af代表10到15

进制转换方法

1. 二进制转十进制

将二进制数按权展开,从右到左依次乘以 2 的幂,然后求和。

  • 例如,二进制 1011 转换为十进制:
    
    1 \times 2^3 + 0 \times 2^2 + 1 \times 2^1 + 1 \times 2^0 = 8 + 0 + 2 + 1 = 11
    

2. 十进制转二进制

通过不断将十进制数除以2记录每次的余数然后将余数倒序排列得到二进制数。

  • 例如,十进制 13 转换为二进制:

    • 13 ÷ 2 = 6余数 1

    • 6 ÷ 2 = 3余数 0

    • 3 ÷ 2 = 1余数 1

    • 1 ÷ 2 = 0余数 1

    • 结果:1101

3. 二进制转八进制

将二进制数每三位分组(从右到左),然后将每组转换为对应的八进制数。

  • 例如,二进制 101011 转换为八进制:
    • 将二进制数分组为 101011
    • 101 = 5011 = 3
    • 结果:53

4. 八进制转二进制

将每个八进制数转换为三位二进制数,拼接得到最终的二进制数。

  • 例如,八进制 53 转换为二进制:
    • 5 = 1013 = 011
    • 结果:101011

5. 十进制转十六进制

通过不断将十进制数除以16记录每次的余数如果余数大于9转换为对应的字母然后将余数倒序排列得到十六进制数。

  • 例如,十进制 255 转换为十六进制:
    • 255 ÷ 16 = 15余数 15对应 F
    • 15 ÷ 16 = 0余数 15对应 F
    • 结果:FF

6. 十六进制转十进制

将十六进制数按权展开从右到左依次乘以16的幂然后求和。

  • 例如,十六进制 1A3 转换为十进制:
    
    1 \times 16^2 + 10 \times 16^1 + 3 \times 16^0 = 256 + 160 + 3 = 419
    

Python 实现进制转换

Python 提供了一些内置函数来轻松进行进制转换。

  • 十进制转其他进制:
  # 十进制转二进制
  print(bin(13))  # 输出0b1101
  
  # 十进制转八进制
  print(oct(13))  # 输出0o15
  
  # 十进制转十六进制
  print(hex(255))  # 输出0xff
  • 其他进制转十进制:
  # 二进制转十进制
  print(int('1101', 2))  # 输出13
  
  # 八进制转十进制
  print(int('15', 8))  # 输出13
  
  # 十六进制转十进制
  print(int('ff', 16))  # 输出255

通过理解这些转换方法,可以更好地掌握不同进制之间的关系和计算方法。