Другое дело, что булевская "логическая единица" значит - любое число, отличное от 0.
грубо говоря
#define false 0
#define true !false
Т.е. если результат действия (умножения) будет, скажем, 0х80 то проверка ифом
char b=0xff;
char a=0x80;
if(a&b) - здесь выполнится
if((a&b) == true) - здесь выполнится, эта запись эквивалентна предыдущей
if((a&b) == 1) - здесь не выполнится, результат не равен единице, true не 1, а число, отличное от 0.
ЗЫ коряво написал....

его за такое