我正在尝试创建一个函数来使用按位和位移打印二进制数字,但我无法正确打印它。以下是我的代码。
void PrintInBinary( unsigned int decNum )
{
int i = 0;
unsigned int highestOne = 1 << (sizeof(unsigned int)*8 - 1);
for( i = 0; i < sizeof(int)*8; i++ ) {
printf( "%u", decNum & (highestOne >> i) );
}
printf("\n");
}
int main()
{
unsigned int a = 128;
PrintInBinary( a );
system("PAUSE");
return 0;
}
以下是输出:
0000000000000000000000001280000000
基本上,它在每个位位置打印 2^bit 而不仅仅是 1(例如,如果我想将 7 转换为二进制,它将是 0000000...00421 而不是 0000000...00111)。这可能是我想念的微不足道的东西,但是有帮助吗?在过去的 20 分钟里,我一直在做这件事,无法弄清楚这么简单的事情。