Никаких извращений не помню. По крайней мере, накладывание маски и получение отдельных битов ведет себя как с любой другой переменной. Т.е. если вам нужен самый младший бит поля, лежащего в байте с третьего бита - делаете "и" с единицей.
Приводится ли поле скрыто к int или, если столько не нужно, к байту - зависит от компилятора.
Из того, что идет на выходе не видно, оптимизация пересчитывает запрошенный младший бит к фактическому положению поля в байте.