Шестнадцатеричная цифра 0xF имеет двоичное представление "1111". Все, что имеет "&" с ней, останется прежним.
Шестнадцатеричная цифра 0x7 имеет такое двоичное представление: "0111". Все, что содержит "&" с ней, потеряет первый бит, или первый бит станет нулевым.
В вашем первом примере "0x5... & 0x7..." остается "0x5...", потому что "5" имеет двоичное представление "0101", а первый бит уже равен 0.
В вашем втором примере "0x8... & 0x7..." изменено на "0x0...", потому что "8" имеет двоичное представление "1000", и после установки первого бита на "0" у нас будет 0000 или шестнадцатеричная цифра 0x0.