Au niveau du bit de concaténation dans C

Je suis en train de concaténer deux nombres binaires dans C. Donc, si j'ai 1010 et 0011 je veux mon résultat à 10100011. J'ai écrit une routine que j'ai pensé faire le travail:

#include <stdio.h>

int main(void) {
    int first = 1010;
    int second = 0011;
    int result = (first << 4) | second;
    printf("%d", result);
    return 0;
}

Je comprends que le numéro imprimé de cours va être en décimal, mais j'ai pensé que d'après mes opérations bit à bit, je serais d'obtenir l'équivalent décimal de 10100011, ou 163. Cependant, mon résultat est imprimé en tant que 16169. Donc je suppose que ma question est...qu'une partie de cela je ne suis pas à comprendre ici? Est-ce juste une mauvaise compréhension de la façon dont printf est au travail, ou sont mes opérations bit à bit incorrect? Est-ce un problème pour essayer de le faire avec ints?

  • 1010 est la représentation décimale d'un nombre binaire 1111110010. Et 0011 est en fait une base de 8 sens littéral décimal 9.
  • et ce qui vous a fait penser que le int représentation binaire au lieu de la virgule?
  • 16169 arrive, à cause de ce type de données int est de 4 octets de long, pas de 1 octet.\