当前位置: 技术问答>linux和unix
&運算問題
来源: 互联网 发布时间:2016-03-02
本文导语: #define IsSync(c) ((c)&0x80) if(IsSync(0x00)) { printf("aan"); } IsSync要填入多少才會執行到printf訊息,IsSync是如何計算判斷的 ,是結果只要11110000以上就是嗎 thx | 只要c...
#define IsSync(c) ((c)&0x80)
if(IsSync(0x00))
{
printf("aan");
}
IsSync要填入多少才會執行到printf訊息,IsSync是如何計算判斷的
,是結果只要11110000以上就是嗎
thx
if(IsSync(0x00))
{
printf("aan");
}
IsSync要填入多少才會執行到printf訊息,IsSync是如何計算判斷的
,是結果只要11110000以上就是嗎
thx
|
只要c的最高位为1就可以了 0x80 到 0xFF都可以.
|
按位与
0x80 = 0000000010000000
因此只要与0x80的1的那一位相同,都是1就可以了,其他的0或1都可以
0x80 = 0000000010000000
因此只要与0x80的1的那一位相同,都是1就可以了,其他的0或1都可以
|
#define IsSync(c) ((c)&0x80)
if(IsSync(0x00))
{
printf("aan");
}
printf会执行,if的括号里的值必须是非0。现在if的括号里做的是0x00&0x80。&是对0x00和0x80的二进制值按位与。即有0出0,全1出1。所以现在0x00&0x80的值是0,即if的括号里的值为0,printf不会被执行。
#define IsSync(c) ((c)&0x79)
if(IsSync(0x39))
{
printf("aan");
}
原理同上。0x39&0x79的值为0x39,即if的括号里的值不为0,printf会被执行。
建议你找点关于c的基本概念的书看看,就会更加的明白。
if(IsSync(0x00))
{
printf("aan");
}
printf会执行,if的括号里的值必须是非0。现在if的括号里做的是0x00&0x80。&是对0x00和0x80的二进制值按位与。即有0出0,全1出1。所以现在0x00&0x80的值是0,即if的括号里的值为0,printf不会被执行。
#define IsSync(c) ((c)&0x79)
if(IsSync(0x39))
{
printf("aan");
}
原理同上。0x39&0x79的值为0x39,即if的括号里的值不为0,printf会被执行。
建议你找点关于c的基本概念的书看看,就会更加的明白。
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。