2. Когда шагаешь отладчиком первое шагаемо, второе нет.
3. Как уже сказали, у программиста всегда вызывает вопросы когда кто-то сдвигает целочисленную переменную и неявно превращает её в bool. С чего ему знать что сдвинутое >> 7 было битовым октетом (байтом)? А если нет? Что будет в bool? Так что на первый взгляд программиста это непонятность и это проблема.
4. Что такое 7? Почему не XXX_BITPOS ?
5. Вся ваша проблема, повлекшая необходимость писать весь этот пустой код-мишуру архитектурная. Вы её сами себе создали, почему-то решив что и лампочки и кнопки это одно, и их должна читать почему-то одна функция. Обдумайте еще раз, зачем это и что это дает лично вам или машине. И действительно ли это необходимо вместо двух однострочников а то и макросов.
Удачи.