Еще раз повторяю символ '!' НЕ ЕСТЬ ОПЕРАТОР ПОБИТОВОЙ ИНВЕРСИИ
XX11 10XX &! 0010 0000 = XX11 10XX & 1101 1111 = XX01 10XX
Это не верно!!!
Вот что происходит на самом деле:
XX11 10XX & ! 0010 0000 = XX11 10XX & 0000 0000 = 0000 0000
А вот это верно:
XX11 10XX & ~0010 0000 = XX11 10XX & 1101 1111 = XX01 10XX
,Обратите внимание что стоит вместо '!'
Для начинающих советую хорошую книжку "Язык программирования С" Кернигана и Ричи. Читайте. Как прочтете переходите к отладчику, в кейле неплохой симулятор.