C++ 打印字符的二进制格式
几个月前,我编写了一个函数来打印C++ 打印字符的二进制格式,c++,c,C++,C,几个月前,我编写了一个函数来打印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'); }
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(字符x)
{
int i,面罩;
对于(i=CHAR\u位;i>=1;i--)
{
掩码=(1运算符。相等运算符(=
)在按位操作(&
)之前排序
叮当声警告如下
&优先级低于==;将首先计算==
在第二个函数中,将if(mask&c==0)
更改为if((mask&c)==0)
为什么不直接使用第一个函数呢?它可以工作并且更短。字符位的值是多少?如果PrnCharBit(“#”)Clang,警告:二进制代码的值应该是什么?因为这是标记C++,代码为STD::CUT运算符优先级。
按标准为1(不考虑底层平台)。thx!错误已修复!(奇怪的是&低于==)
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');
}