Obtenir la représentation binaire d'un entier en C++

Les InternetsTM sont peuplés d'algorithmes permettant d'obtenir la représentation binaire d'entiers. Pourtant, la STL, par le truchement du conteneur associatif bitset, offre un mécanisme simple permettant d'obtenir la représentation binaire d'un entier.

Le Modus operandi est le suivant: instancier un bitset de la taille appropriée — par exemple bitset<sizeof(int)*8> — puis appeler la méthode to_string sur ce dernier.

Avec un soupçon de programmation générique ajouté au mélange, nous obtenons la fonction ci-dessous. Cette dernière permet d'afficher la représentation binaire de tous les entiers présents en C++.

template <typename T>
std::string binary_repr(T value) {
    // The bitset size is set to match the type size.
    return std::bitset<sizeof(T)*8>(value).to_string();
}

Voici un exemple d'utilisation.

int main() {
    char c = 'A';
    short s = 123;
    int i = 123456;
    long long l = 123456789;

    cout << binary_repr(c) << endl;
    cout << binary_repr(s) << endl;
    cout << binary_repr(i) << endl;
    cout << binary_repr(l) << endl;

    return 0;
}

Exécuter cet exemple affiche les représentations binaires ci-dessous.

01000001
0000000001111011
00000000000000011110001001000000
0000000000000000000000000000000000000111010110111100110100010101

Le code source de complet de cet exemple est disponible ici.