08-基础算法/03-进制转换:修订间差异
跳转到导航
跳转到搜索
小 导入1个版本 |
批量导入三三文档 |
||
| 第73行: | 第73行: | ||
[[Category:基础算法]] | [[Category:基础算法]] | ||
[[Category:三三文档]] | [[Category:三三文档]] | ||
2026年5月20日 (三) 18:23的最新版本
进制转换
常见进制
| 进制 | 基数 | 字符 |
|---|---|---|
| 二进制 | 2 | 0, 1 |
| 八进制 | 8 | 0 ~ 7 |
| 十进制 | 10 | 0 ~ 9 |
| 十六进制 | 16 | 0 ~ 9, A ~ F |
任意进制转十进制
按权展开求和:
[math]\displaystyle{ A_{k} = a_n \times k^n + a_{n-1} \times k^{n-1} + \cdots + a_1 \times k^1 + a_0 \times k^0 }[/math]
// 将 k 进制字符串转为十进制整数
int to_decimal(string s, int k)
{
int res = 0;
for (char c : s)
{
int digit = (c >= '0' && c <= '9') ? c - '0' : c - 'A' + 10;
res = res * k + digit;
}
return res;
}
十进制转任意进制
除基取余,逆序排列:
// 将十进制整数 x 转为 k 进制字符串
string from_decimal(int x, int k)
{
if (x == 0) return "0";
string res = "";
while (x)
{
int r = x % k;
char c = (r < 10) ? '0' + r : 'A' + r - 10;
res = c + res;
x /= k;
}
return res;
}
二进制与八进制、十六进制的快速互转
- 二进制 → 八进制:三位一分组
- 二进制 → 十六进制:四位一分组
- 反过来同理