08-基础算法/03-进制转换:修订间差异

来自三三百科
跳转到导航 跳转到搜索
33DAI留言 | 贡献
导入1个版本
33DAI留言 | 贡献
批量导入三三文档
 
第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;
}

二进制与八进制、十六进制的快速互转

  • 二进制 → 八进制:三位一分组
  • 二进制 → 十六进制:四位一分组
  • 反过来同理