当前位置:  技术问答>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

|
只要c的最高位为1就可以了 0x80 到 0xFF都可以.

|
按位与
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的基本概念的书看看,就会更加的明白。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。














站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3