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
   

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 大写,那么输出的十六进制数字和前缀都大写。

练习题
题库