Decimal to binary (and vice-versa)

后端 未结 4 737
小蘑菇
小蘑菇 2020-12-19 17:34

Can anybody give an example of c++ code that can easily convert a decimal value to binary and a binary value to decimal please?

4条回答
  •  佛祖请我去吃肉
    2020-12-19 18:18

    Well, your question is really vague, so this answer is the same.

    string DecToBin(int number)
    {
        if ( number == 0 ) return "0";
        if ( number == 1 ) return "1";
    
        if ( number % 2 == 0 )
            return DecToBin(number / 2) + "0";
        else
            return DecToBin(number / 2) + "1";
    }
    
    int BinToDec(string number)
    {
        int result = 0, pow = 1;
        for ( int i = number.length() - 1; i >= 0; --i, pow <<= 1 )
            result += (number[i] - '0') * pow;
    
        return result;
    }
    

    You should check for overflow and do input validation of course.

    x << 1 == x * 2

    Here's a way to convert to binary that uses a more "programming-like" approach rather than a "math-like" approach, for lack of a better description (the two are actually identical though, since this one just replaces divisions by right shifts, modulo by a bitwise and, recursion with a loop. It's kind of another way of thinking about it though, since this makes it obvious you are extracting the individual bits).

    string DecToBin2(int number)
    {
        string result = "";
    
        do
        {
            if ( (number & 1) == 0 )
                result += "0";
            else
                result += "1";
    
            number >>= 1;
        } while ( number );
    
        reverse(result.begin(), result.end());
        return result;
    }
    

    And here is how to do the conversion on paper:

    1. Decimal to binary
    2. Binary to decimal

提交回复
热议问题