任意进制转化

原题在这里

本来是个水题,但是因为负数取补码计算就学到了东西。

code:

class Solution
{
    string ch = "0123456789abcdef";
    string mk(long x)
    {
        if (x < 1)
            return "";
        return mk(x / 16) + ch[x % 16];
    }

public:
    string toHex(int num)
    {
        //way1
        long x;
        if (num > 0)
            x = num;
        else
            x = pow(2, 32) + num;
        //way2
        // unsigned int x=num;
        return num == 0 ? "0" : mk(x);
    }
};

关键在于取补码,这里单独做一篇文章说明计算机的计算。

【Over】

posted @ 2022-04-01 13:55  Renhr  阅读(6)  评论(0)    收藏  举报