课程说明
学习目标与重要性
本课是可选的,但建议至少了解十六进制的概念,因为它在后续课程中会经常出现。
数制基础概念
十进制系统
在日常生活中,我们使用十进制数字进行计数,每个数字可以是 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-15 | 0000-1111 | 0-17 | 0-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;
}
实践与测验
进制转换练习
通过表格练习不同进制之间的转换,加深对数制系统的理解。
最佳实践
- 使用数字分隔符提高代码可读性
- 根据具体需求选择合适的数制表示方法
- 在位运算中优先考虑使用十六进制表示