Чтобы проверить бит, равен ли он 0 или 1, вы можете определить простой макрос, например:
#define BIT_ISSET(var, pos) (!!((var) & (1ULL<<(pos))))
, а затем использовать его в предложениях if.
Обратите внимание на оператор ' !! ', чтобы убедиться, что он возвращает 0 или 1.