long number = 12501;
unsigned char mask = 1 << 7; // create a mask 10000000
for (size_t i=0; i<(sizeof(long)*8); ++i){ // iteration for all bits of long type
if (mask & number){
putchar('1');
} else {
putchar('0');
}
number <<=1; // I shift the most significant bit after every comparison
}
是否可以使用字符掩码进行二进制转换?我当前的输出是:0110100000000000000000000000000000000000000000000000000000000000
预期输出:0000000000000000000000000000000000000000000000000011000011010101
这里有正确的版本
void printbin(long number)
{
unsigned long mask = 1LU << (sizeof(unsigned long) * CHAR_BIT - 2); // create a mask 10000000
for (; mask; mask >>= 1){ // iteration for all bits of long type
putchar((number & mask) ? '1' : '0');
}
}