3
我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');
}
但是,第二個函數不起作用。我不明白爲什麼,因爲這兩個功能幾乎是一樣的!爲什麼第二個函數不會產生相同的結果?
你爲什麼不只是使用第一個函數?它工作並且更短。 – 2014-10-28 08:43:56
CHAR_BIT的值是什麼?如果PrnCharBit('#');那麼二進制值應該是什麼? – 2014-10-28 08:47:36
由於這是標記爲C++,'std :: cout << std :: bitset(c);' –
user657267
2014-10-28 08:48:36