相关概念
| 要素 | 定义 | 举例(十进制) |
|---|---|---|
| 数位 | 数字符号在数中所处的位置 | 数字5在百位、十位、个位 |
| 基数 | 该进制允许使用的数字符号个数 | 十进制基数为10 |
| 位权 | 某一位上的1所表示的实际数值大小 | 百位的权是10²=100 |
基本特征
| 进制 | 基数 | 数字符号 | 进位规则 |
|---|---|---|---|
| 二进制(B) | 2 | 0, 1 | 逢二进一 |
| 八进制(O/Q) | 8 | 0~7 | 逢八进一 |
| 十进制(D) | 10 | 0~9 | 逢十进一 |
| 十六进制(H) | 16 | 0~9, A(10), B(11), C(12), D(13), E(14), F(15) | 逢十六进一 |
进制转换
其他进制->十进制方法:将每位数字乘以该位的位权,再求和。
- 整数部分(从右往左,第i位权为 基数ⁱ⁻¹)
- 小数部分(从左往右,第j位权为 基数⁻ʲ)
十进制->其他进制方法:
- 整数部分:除基取余,逆序排列
- 小数部分:乘基取整,顺序排列
二进制<->八进制/十六进制方法:分组转换
| 转换类型 | 方法 | 规则 |
|---|---|---|
| 二转八 | 三位一组 | 从小数点开始,整数部分向左每3位一组,小数部分向右每3位一组,不足补0 |
| 八转二 | 一位拆三位 | 每位八进制数拆成3位二进制 |
| 二转十六 | 四位一组 | 从小数点开始,整数部分向左每4位一组,小数部分向右每4位一组,不足补0 |
| 十六转二 | 一位拆四位 | 每位十六进制数拆成4位二进制 |
八进制/十六进制<->十进制方法:与二进制类似,基数从2换成8或16
表示方法
| 进制 | 前缀 | 示例 | 十进制值 |
|---|---|---|---|
| 十进制 | 无 | 100 | 100 |
| 八进制 | 0 | 075 | 61 |
| 十六进制 | 0x 或 0X | 0x60 | 96 |
| 二进制(C++14起) | 0b 或 0B | 0b1010 | 10 |
C++应用
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
cout << oct << 35 << endl; // 输出八进制:43
cout << dec << 35 << endl; // 输出十进制:35
cout << hex << 35 << endl; // 输出十六进制:23
cout << bitset<8>(35) << endl; // 输出二进制:00100011
return 0;
}