c++,进制在生活中的运用以及不同进制相互转换的代码的通用模板

张开发
2026/4/17 1:02:10 15 分钟阅读

分享文章

c++,进制在生活中的运用以及不同进制相互转换的代码的通用模板
进制的本质是用“基数的幂次加权”来表示任意自然数的一套编码规则。它不改变数量只改变书写方式。通俗来讲就是你有十个苹果但是别人却能用三个芒果来换你十个苹果而这三个芒果在一定的条件下的效果可以等于十个苹果和别人换十个苹果或者换成与苹果相等价值的东西它的基础本质只是披了一层“外衣”的苹果。如果进制脱离了“苹果”与“芒果”那么3等于10世界将变得混乱它将变成耍流氓的数字。那么进制中的苹果与芒果是什么呢答案其实就在生活中例如计算机领域二进制↔十六进制内存地址、颜色编码、八进制Linux文件权限时间历法十进制↔60进制时分秒、十进制↔7进制周数计算编码领域Base64编码64进制、条码/二维码二进制编码Excel场景十进制↔26进制列名转换在十进制转七进制问题中我们可以用除基取余法思路如下1. 处理特殊值00的七进制就是 0 直接返回即可。2. 处理负数先记录负号对数字的绝对值做进制转换最后在结果前拼接负号。3. 正数转换步骤用数字除以7得到商和余数余数就是当前最低位的数字。用商继续除以7重复取余直到商为0。将所有余数逆序排列就是最终的七进制数。通过上面思路我们不难创造出用苹果交换芒果的市场#include string#include algorithm#include cmathusing namespace std;string decimalToAny(long long num, int base) {if (num 0) return 0;const string digits 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ;bool isNegative num 0;num llabs(num);string res;while (num 0) {int remainder num % base;res digits[remainder];num num / base;}if (isNegative) {res -;}reverse(res.begin(), res.end());return res;}这就是进制转化的通用模板。当我们想用苹果换芒果时只需把decimalToAny(XY) 的x与y分别替换成苹果与芒果。十进制10转7进制 decimalToAny(10, 7) → 输出 13。

更多文章