1. 进制转换
发布时间:
1.1 书写格式
| 名称 | 书写格式 | 实例 |
| 二进制 | 以0b开头 | 0b1011 |
| 八进制 | 以0开头 | 07651 |
| 十六进制 | 以0X或0x开头 | 0X1234 |
| 十进制 | 正常 | 123 |
1.2 整数互转
- 二、八、十六进制转十进制
每一位上的值乘以进制的位数次方的和。 - 十进制转二、八、十六进制
整数部分除进制取余,余数从下向上串起。小数部分成进制去个数位将取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。 - 二进制转八进制
从低位起,每三位分一段,转为一位8进制数。 - 二进制转十六进制
从低位起,每四位分一段,转为一位16进制数。
1.3 二进制小数转十进制小数
如 101.01
整数位是1x2^2+0x2^1+1X2^0+0x2^1+0x2^-2
1.4 十进制小数的二进制小数
核心操作原理: 乘2取整。
十进制小数的二进制表示本质是将数值分解为2的负整数次幂之和,通过反复乘以2提取各次幂的系数(0或1),这些系数按顺序排列即为二进制小数。
具体操作步骤。
步骤一:将十进制小数乘以2,记录乘积的整数部分(0或1),作为二进制小数第一位;
步骤二:取乘积的小数部分继续乘以2,记录新的整数部分作为下一位;
步骤三:重复上述过程,直到小数部分归零或达到所需精度。
示例解析。
示例1:0.625转换过程。
0.625 × 2 = 1.25 → 取1,余0.25(第一位)。
0.25 × 2 = 0.5 → 取0,余0.5(第二位)。
0.5 × 2 = 1.0 → 取1,余0(第三位)。
最终结果:0.101
1.5 进制输出
cout输出格式转换
| 标识符 | 解释 | 实例 |
| oct | 之后全部转换为八进制输出 | cout<<oct<<13; 15 |
| dec | 之后全部转换为十进制输出 | cout<<hex<<0ff; 255 |
| hex | 之后全部转换为十六进制输出 | cout<<hex<<25; 19 |
| bin | 之后全部转换为二六进制输出 C++14以后 | cout<<hex<<25; 19 |
例如:
js
int num = 255;
// 默认输出(十进制)
cout << "十进制: " << num << endl; // 输出: 255
// 改为十六进制输出
cout << "十六进制: " << hex << num << endl; // 输出: ff
// 如果要恢复十进制输出,可以使用 dec
cout << "恢复十进制: " << dec << num << endl; // 输出: 255
1
2
3
4
5
6
7
2
3
4
5
6
7
print输出格式转换
| 格式控制符 | 说明 |
|---|---|
| %hd、%d、%ld | 以十进制、有符号的形式输出 short、int、long 类型的整数 |
| %hu、%u、%lu | 以十进制、无符号的形式输出 short、int、long 类型的整数 |
| %ho、%o、%lo | 以八进制、不带前缀、无符号的形式输出 short、int、long 类型的整数 |
| %#ho、%#o、%#lo | 以八进制、带前缀、无符号的形式输出 short、int、long 类型的整数 |
| %hx、%x、%lx %hX、%X、%lX | 以十六进制、不带前缀、无符号的形式输出 short、int、long 类型的整数。如果 x 小写,那么输出的十六进制数字也小写;如果 X 大写,那么输出的十六进制数字也大写。 |
| %#hx、%#x、%#lx %#hX、%#X、%#lX | 以十六进制、带前缀、无符号的形式输出 short、int、long 类型的整数。如果 x 小写,那么输出的十六进制数字和前缀都小写;如果 X 大写,那么输出的十六进制数字和前缀都大写。 |
练习题
题库 ★