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