如有字符myChar内部为10011101
  
GetBit(myChar,5)返回0

解决方案 »

  1.   

    bool GetBit(....)
    {
      int x = 1 ;
      x << (nBit - 1);
     return (srcChar & x);}
      

  2.   

    GetBit(char myChar,int i)
    {
    int a=1;
    return myChar&(a<<i);
    }
      

  3.   

    int GetBit(char myChar,int i)
    {
    int a=1;
    return myChar&(a<<i);
    }
      

  4.   

    刚才的函数有问题
    int GetBit(char myChar,int i)
    {
    return (myChar&(1<<i-1))>>i-1;
    }
      

  5.   

    如果不支持位运算
    可以
    bool GetBit(unsigned char srcChar,int nBit)
    {

        int x = 1;
       for( int i = 0 ; i < nBit -1 ; i++)
       x *= 2;

    return (srcChar & x);

    }void CDLG3Dlg::OnButton1() 
    {
        unsigned char y = 0235;
    bool Flag = GetBit(y,1);
     Flag = GetBit(y,2);
     Flag = GetBit(y,3);
     Flag = GetBit(y,4);
     Flag = GetBit(y,5);


    }
      

  6.   

    呵呵,再去除一下警告错误
    int GetBit(char myChar,int i)
    {
    return (myChar&(1<<(i-1)))>>(i-1);
    }
      

  7.   

    嘿嘿,按照你的格式
    BOOL GetBit(unsigned char srcChar,int nBit)
    {
    return (srcChar&(1<<(nBit-1)))>>(nBit-1);
    }
      

  8.   

    如有字符myChar内部为10011101,GetBit(myChar,5)返回0.
    ------------------------------------------------------
    所以GetBit(unsigned char srcChar,int nBit)中,nBit从0开始
    稍微改一下,函数返回类型还是改为int
    int GetBit(unsigned char srcChar,int nBit)
    {
      if ((nBit < 0) ||(nBit > 7))
            return -1;    return (srcChar&(1<<nBit))>>nBit;
    }