비트 연산 (&) 문제

1298 단어 비트 연산
Find the defects in each of the following programs, and explain why it is incorrect.
// the function need set corresponding bit in int

#define BIT_MASK(bit_pos)      (0x01 << (bit_pos))



int Bit_Reset(unsigned int *val, unsigned char pos)

{

    if (pos >= sizeof(unsigned int)*8)

    {

        return 0;

    }



    *val = (*val && ~BIT_MASK(pos));



    return 1;

}

분석:
*val = (*val && ~BIT_MASK(pos));

비트 연산이 아니라 논리 연산입니다. 다음과 같이 수정하면 됩니다.
*val = (*val & ~BIT_MASK(pos));

좋은 웹페이지 즐겨찾기