【第0001页 · 模拟】进制转换

 【前言】本文以及之后的一些题解都会陆续整理到目录中,若想了解全部题解整理,请看这里:

第0001页 · 进制转换

        日常生活中,我们常用的是十进制,而计算机中使用的进制是二进制,事实上,还有八进制、七进制和十六进制等等不同的进制方法。那么,对两个不同的进制,应该如何进行相互转换呢?我们先简要地整理一下步骤。

        对于一个 P 进制的数,如果要转换为 Q 进制,可以分为以下两步:

  1. 将 P 进制数转换为十进制数;
  2. 将十进制数再重新转换为 Q 进制数。也就是说,我们以十进制为中介进行转换。

        假如这是一个整数,相信大家都是没有问题的。这里提一下,如果这是一个小数,那么从十进制到 Q 进制的过程简单来说就是“乘 Q 取整,顺序排列”

        下面我们来解决一道以此为主题的问题(蓝色是OJ平台的链接哦):

【七进制数】给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。(其中,-10^7 <= num <= 10^7)

示例1示例2
输入:num = 100输入:num = -7
输出:“202”

输出:“-10”

【解题分析】具体实现过程比较简单,本题需要注意的是通过累除得到的结果应该要倒序之后才是正确形式。同时,对于 num 是正数、负数还是零要分开讨论。

【源码展示】

class Solution {
public:
    string convertToBase7(int num) {
        std::string num_str = "", num_str2 = "";
        if (num < 0) {
            num_str += '-';
            num *= -1;
        }
        else if (num == 0) num_str = "0";
        while (num != 0) {
            num_str2 += (num % 7) + 48;
            num /= 7;
        }
        int length = num_str2.length();
        for (int it = length - 1; it >= 0; it--) {
            num_str += num_str2[it];
        }
        return num_str;
    }
};
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值