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