试图使用字符掩码将十进制长转换为二进制,但是我无法成功

问题描述 投票:-1回答:1
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

c binary decimal
1个回答
0
投票

这里有正确的版本

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');
    }
}

https://godbolt.org/z/_Vr4kE

© www.soinside.com 2019 - 2024. All rights reserved.