【位运算和数学】——七进制(c++)

LC 七进制数

给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。

  1. 由于返回类型为string,选择string类型来做,另:当给定负整数时(-7),使用int类型不考虑转换进制时前置零的可能,会得到错误结果("-1",正确输出应为"-10")。
  2. 给定负整数时,先取绝对值,再加负号。
  3. 可用递归来解…
string convertToBase7(int num){
    bool s = false;
    if(num == 0){
        return "0";
    }
    if(num < 0){
        s = true;
        num = -num;
    }
    string ans;
    while(num > 0){
        ans.push_back(num % 7 + '0');
        num /= 7;
    }
    if(s){
        ans.push_back('-');
    }
    reverse(ans.begin(),ans.end());
    return ans;
}

递归解法

class Solution {
public:
    string convertToBase7(int num) {
        if (num < 0) return "-" + convertToBase7(-1 * num);
        if (num < 7) return to_string(num);
        return convertToBase7(num / 7) + to_string(num % 7);
    }
};

笔记:
将十进制数转成 XXX 进制数,需要对整数部分和小数部分分别转换。
对于整数部分,转换方式是将十进制数的整数部分每次除以 X 直到变成 0,并记录每次的余数反向遍历每次的余数即可得到 X 进制表示。
对于小数部分,转换方式是将十进制数的小数部分每次乘以 X 直到变成 0,并记录每次的整数部分正序遍历每次的整数部分即可得到 X 进制表示。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zedkyx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值