Files
BiJi/表格/进制转换.md

2.8 KiB
Raw Blame History

进制转换笔记

1. 不同进制表示法

  • 十进制(Decimal): 普通数字,如 100
  • 二进制(Binary): 前缀 0b,如 0b1100100
  • 八进制(Octal): 前缀 0o0,如 0o144
  • 十六进制(Hexadecimal): 前缀 0x,如 0x64

2. 十进制转其他进制

2.1 十进制转二进制

方法:除2取余逆序排列

示例:十进制 100 转二进制

100 ÷ 2 = 50 余 0
50 ÷ 2 = 25 余 0
25 ÷ 2 = 12 余 1
12 ÷ 2 = 6 余 0
6 ÷ 2 = 3 余 0
3 ÷ 2 = 1 余 1
1 ÷ 2 = 0 余 1

结果:0b1100100

2.2 十进制转八进制

方法:除8取余逆序排列

示例:十进制 100 转八进制

100 ÷ 8 = 12 余 4
12 ÷ 8 = 1 余 4
1 ÷ 8 = 0 余 1

结果:0o144

2.3 十进制转十六进制

方法:除16取余逆序排列

示例:十进制 100 转十六进制

100 ÷ 16 = 6 余 4
6 ÷ 16 = 0 余 6

结果:0x64

根据公式转换后变为0x0064

3. 其他进制转十进制

3.1 二进制转十进制

方法:按权展开相加

示例:二进制 0b1100100 转十进制

1×2^6 + 1×2^5 + 0×2^4 + 0×2^3 + 1×2^2 + 0×2^1 + 0×2^0
= 64 + 32 + 0 + 0 + 4 + 0 + 0
= 100

3.2 八进制转十进制

方法:按权展开相加

示例:八进制 0o144 转十进制

1×8^2 + 4×8^1 + 4×8^0
= 64 + 32 + 4
= 100

3.3 十六进制转十进制

方法:按权展开相加

示例:十六进制 0x64 转十进制

6×16^1 + 4×16^0
= 96 + 4
= 100

4. 二进制与十六进制互转

4.1 二进制转十六进制

方法:四位一组,从右到左

示例:二进制 0b1100100 转十六进制

0110 0100
 6     4

结果:0x64

4.2 十六进制转二进制

方法:一位变四位

示例:十六进制 0x64 转二进制

6 → 0110
4 → 0100

结果:0b01100100 (即 0b1100100)

5. 计算机中常用的进制表示

5.1 字节表示

  • 1字节(Byte) = 8位(bit)
  • 十六进制通常用两个字符表示一个字节 (如 0x00 到 0xFF)

5.2 有符号和无符号

  • 无符号:所有位都表示数值大小
  • 有符号:最高位表示符号 (0表示正1表示负)

6. 进制转换工具

6.1 编程实现

  • PHP: dechex(), hexdec(), decbin(), bindec(), decoct(), octdec()
  • JavaScript: Number.toString(), parseInt()
  • Python: bin(), oct(), hex(), int()

6.2 实际应用场景

  • 网络编程: IP地址通常用十进制点分表示但内部处理用二进制
  • 计算机图形: 颜色值通常用十六进制表示 (如 #FF0000 表示红色)
  • 底层编程: 寄存器、内存地址等通常用十六进制表示

7. 注意事项

  • 不同编程语言对进制字面量的表示可能略有不同
  • 处理大数值时要注意溢出问题
  • 进行位运算时,确保理解二进制补码表示