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

89 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

进制转换是计算机科学中的一个基本概念。不同的进制表示系统使用不同的基数例如二进制的基数是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
```
通过理解这些转换方法,可以更好地掌握不同进制之间的关系和计算方法。