Como manipular e representar números binários em C ++

No momento, estou tentando construir uma tabela de pesquisa para uma árvore huffman usando um algoritmo de navegação de pré-ordem bastante simples, mas estou ficando preso realizando operações bit básicas muito básicas. O código do psuedo segue:

void preOrder(huffNode *node, int bit) //not sure how to represent bit
{
  if (node == NULL)
    return;

  (1) bit = bit + 0; //I basically want to add a 0 onto this number (01 would go to 010)
  preOrder(node->getLeft(), bit);
  (2) bit = bit - 0 + 1; //This should subtract the last 0 and add a 1 (010 would go to 011)
  preOrder(node->getRight());


}

Estou ficando bastante confuso sobre como realizar as operações definidas nas linhas (1) e (2)

Que tipo de tipo de dados é usado para representar e imprimir números binários? No exemplo acima eu tenho o número representado como um int, mas tenho certeza que isso está incorreto. Além disso, como você adiciona ou subtrai valores? Eu entendo como & e | tipos de lógica funciona, mas estou ficando confuso quanto à forma como se realiza esses tipos de operações no código.

Alguém poderia postar alguns exemplos muito simples?

questionAnswers(3)

yourAnswerToTheQuestion