c ++中的十进制到8位二进制转换

时间:2011-02-07 16:44:27

标签: c++ binary

我正在进行十进制到二进制转换。我可以使用它来转换它们 char bin_x [10];   itoa(x,bin_x,2); 但问题是,我想以8位回答。它给我,例如x = 5,所以输出将是101,但我想要00000101。 有没有办法在数组的开头附加零?或者是否可以立即获得8位答案?我在C ++中这样做

3 个答案:

答案 0 :(得分:12)

在C ++中,最简单的方法是可能使用std::bitset

#include <iostream>
#include <bitset>

int main() { 
    int x = 5;

    std::bitset<8> bin_x(x);
    std::cout << bin_x;

    return 0;
}

结果:

  

00000101

答案 1 :(得分:0)

要打印出单个数字的位,您需要执行以下操作:

//get the digit (in this case, the least significant digit)
short digit = number % 10; //shorts are 8 bits

//print out each bit of the digit
for(int i = 0; i < 8; i++){
    if(0x80 & digit) //if the high bit is on, print 1
        cout << 1;
    else
        cout << 0; //otherwise print 0
    digit = digit << 1; //shift the bits left by one to get the next highest bit.
}

答案 2 :(得分:0)

itoa()不是标准函数,因此如果要编写可移植代码,使用它是不好的。

你也可以使用类似的东西:

std::string printBinary(int num, int bits) {
    std::vector<char> digits(bits);
    for (int i = 0; i < bits; ++i) {
        digits.push_back(num % 2 + '0');
        num >>= 1;
    }
    return std::string(digits.rbegin(), digits.rend());
}

std:: cout << printBinary(x, 8) << std::endl;

但我必须同意使用bitset会更好。