Я написал функцию для печати двоичного формата char
месяцев назад, это было так, и она работала хорошо:Печати двоичного формата полукокс
void PrnCharBit(char x)
{
int i,mask;
for(i=CHAR_BIT;i>=1;i--)
{
mask=(1<<(i-1))&x;
putchar((mask==0)?'0':'1');
}
putchar('\n');
}
И сегодня я хочу, чтобы использовать эту функцию, так Я написал один почти такой же, как функция выше:
void PrnCharBit(char c)
{
int i;
char mask=0;
//printf("%d\n",CHAR_MAX);
for(i=sizeof(char)*CHAR_BIT-1;i>=0;i--)
{
mask=1<<i;
if(mask&c==0) putchar('0');
else putchar('1');
}
putchar('\n');
}
Однако вторая функция не работает. Я не могу понять, почему, потому что две функции почти одинаковы! Почему вторая функция не дает тот же результат?
Почему вы не просто использовать первую функцию? Он работает и короче. –
Какова ценность CHAR_BIT?. если PrnCharBit ('#'); то что такое двоичное значение? –
Поскольку это помечено C++, 'std :: cout << std :: bitset (c);' –
user657267