【C言語】
ビット演算子の不一致 (bitwise,bitmask,bit pattern)

■1.bitwise comparison always evaluates to true

#include    <stdio.h>
#include    <stdint.h>
int f(int32_t x){
    if((x | 1) != 0)
        return  1;
    return  0;
}

■2.bitwise comparison always evaluates to false

#include    <stdio.h>
#include    <stdint.h>
int f(uint32_t x){
    if((x & 2) == 1)
       if((x & 0xFF00U) == 0xFFU)
           if((x & 0xFFFF0000U) == 0xFFFFU)
        return     1;
    return  0;
}

■3.Mismatching bitmasks. Result is always 0

[(style)mismatchingBitAnd]

#include    <stdio.h>
typedef unsigned int uint32_t ;
void f(uint32_t y)
{
    uint32_t x = y & 0xFFFF0000U; 
    uint32_t z = x & 0x0000FFFFU ; 
    printf("%x\n",z);
}

上記のマスクパターンでは
yの値に無関係に
zの値は0になります。