Posso usar operadores bit a bit em vez de operadores lógicos?

Operadores bit a bit trabalham em bits, operadores lógicos avaliam expressões booleanas. Contanto que as expressões retornembool, por que não usamos operadores bit a bit em vez de lógicos?

Neste exemplo, uso bit a bit em vez de lógico:

#include <iostream>


int main(){

    int age;
    std::cin >> age;

    if( (age < 0) | (age > 100) ) // eg: -50: 1 | 0 = 1
        std::cout << "Invalid age!" << std::endl;

//  if( (age < 0) || (age > 100) )
//      std::cout << "Invalid age!" << std::endl;

  return 0;
}

questionAnswers(5)

yourAnswerToTheQuestion