C++ 数制系统完全指南:十进制、二进制、十六进制和八进制详解

课程说明

学习目标与重要性

本课是可选的,但建议至少了解十六进制的概念,因为它在后续课程中会经常出现。

数制基础概念

十进制系统

在日常生活中,我们使用十进制数字进行计数,每个数字可以是 0 到 9。十进制也被称为"基数 10",因为有 10 个可能的数字。

int x { 12 }; // 12 被认为是一个十进制数字

二进制系统

在二进制中,只有 2 个数字:0 和 1(基数 2)。计数方式:0、1、10、11、100、101、110、111…

数制系统详解

八进制表示法

八进制是基数 8 的系统,使用数字 0-7:

#include <iostream>

int main()
{
    int x{ 012 }; // 数字前的 0 表示这是一个八进制数
    std::cout << x << '\n';
    return 0;
}

十六进制表示法

十六进制使用 16 个符号(0-9 和 A-F):

#include <iostream>

int main()
{
    int x{ 0xF }; // 数字前的 0x 表示这是一个十六进制数
    std::cout << x << '\n';
    return 0;
}

进制转换与表示

数制对照表

十进制二进制八进制十六进制
0-150000-11110-170-F

二进制与十六进制的关系

一个十六进制数字可以表示 4 位二进制数,这使得它在表示二进制数据时特别有用。

现代C++特性

二进制字面量(C++14)

#include <iostream>

int main()
{
    int bin{};        // 假设是 16 位整数
    bin = 0b1;        // 二进制表示:0000 0000 0000 0001
    bin = 0b11;       // 二进制表示:0000 0000 0000 0011
    bin = 0b1010;     // 二进制表示:0000 0000 0000 1010
    return 0;
}

数字分隔符

int bin { 0b1011'0010 };  // 使用分隔符提高可读性
long value { 2'132'673'462 }; // 大数值更容易阅读

输出格式化

进制输出控制

#include <iostream>

int main()
{
    int x { 12 };
    std::cout << std::dec << x << '\n'; // 十进制
    std::cout << std::hex << x << '\n'; // 十六进制
    std::cout << std::oct << x << '\n'; // 八进制
    return 0;
}

二进制输出方法

#include <bitset>
#include <iostream>

int main()
{
    std::bitset<8> bin1{ 0b1100'0101 };
    std::cout << bin1 << '\n';
    return 0;
}

实践与测验

进制转换练习

通过表格练习不同进制之间的转换,加深对数制系统的理解。

最佳实践

  • 使用数字分隔符提高代码可读性
  • 根据具体需求选择合适的数制表示方法
  • 在位运算中优先考虑使用十六进制表示

关注公众号,回复"cpp-tutorial"

可领取价值199元的C++学习资料

公众号二维码

扫描上方二维码或搜索"cpp-tutorial"