Decimal to binary (and vice-versa)

后端 未结 4 716
小蘑菇
小蘑菇 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:11
    //The shortest solution to convert dec to bin in c++
    
    void dec2bin(int a) {
        if(a!=0) dec2bin(a/2);
        if(a!=0) cout<<a%2;
    }
    int main() {
        int a;
        cout<<"Enter the number: "<<endl;
        cin>>a;
        dec2bin(a);
        return 0;
    

    }

    0 讨论(0)
  • 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
    0 讨论(0)
  • 2020-12-19 18:22

    I assume you want a string to binary conversion?

    template<typename T> T stringTo( const std::string& s )
       {
          std::istringstream iss(s);
          T x;
          iss >> x;
          return x;
       };
    
    template<typename T> inline std::string toString( const T& x )
       {
          std::ostringstream o;
          o << x;
          return o.str();
       }
    

    use these like this:

    int x = 32;
    std:string decimal = toString<int>(x);
    int y = stringTo<int>(decimal);
    
    0 讨论(0)
  • 2020-12-19 18:31

    strtol will convert a binary string like "011101" to an internal value (which will normally be stored in binary as well, but you don't need to worry much about that). A normal conversion (e.g. operator<< with std:cout) will give the same value in decimal.

    0 讨论(0)
提交回复
热议问题