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

89 lines
2.9 KiB
Markdown
Raw Normal View History

进制转换是计算机科学中的一个基本概念。不同的进制表示系统使用不同的基数例如二进制的基数是2十进制的基数是10来表示数字。以下是一些常见的进制及其转换方法
### 常见进制
- **二进制Binary**基数为2只使用数字 `0``1`
- **八进制Octal**基数为8使用数字 `0``7`
- **十进制Decimal**基数为10使用数字 `0``9`
- **十六进制Hexadecimal**基数为16使用数字 `0``9` 和字母 `A``F`(或 `a``f`代表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` 转换为八进制:
- 将二进制数分组为 `101``011`
- `101` = 5`011` = 3
- 结果:`53`
#### 4. 八进制转二进制
将每个八进制数转换为三位二进制数,拼接得到最终的二进制数。
- 例如,八进制 `53` 转换为二进制:
- `5` = `101``3` = `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 提供了一些内置函数来轻松进行进制转换。
- **十进制转其他进制:**
``` python
# 十进制转二进制
print(bin(13)) # 输出0b1101
# 十进制转八进制
print(oct(13)) # 输出0o15
# 十进制转十六进制
print(hex(255)) # 输出0xff
```
- **其他进制转十进制:**
``` python
# 二进制转十进制
print(int('1101', 2)) # 输出13
# 八进制转十进制
print(int('15', 8)) # 输出13
# 十六进制转十进制
print(int('ff', 16)) # 输出255
```
通过理解这些转换方法,可以更好地掌握不同进制之间的关系和计算方法。