Operadores lógicos em C

Estou tendo problemas para entender como os operadores lógicos funcionam em C. Já entendi como os operadores de nível de bits funcionam e também sei que os operadores lógicos tratam argumentos diferentes de zero como representando TRUE e zero argumentos como representando FALSE

Mas digamos que temos 0x65 e 0x55. Eu não entendo porque e como esta operação dá 0x01.

Eu tentei convertê-lo em binário, mas não consigo descobrir como funciona

questionAnswers(8)

yourAnswerToTheQuestion