module Pack:sig..end
    Notons n le nombre de bits utilisés pour représenter le type int sur
    votre machine. Autrement dit 31 ou 63 selon que l'architecture de votre
    machine soit 32 ou 64 bits, cette dernière information étant donnée par
    Sys.word_size.
    Ce module est utilisé pour écrire le module ByteStream.
val pop_bits_as_int : int -> bool MyStream.t -> int * bool MyStream.tk la valeur du premier argument, la fonction pop_bits_as_int k prend
    les k premiers bits (i.e. les plus à gauche) du flot binaire passé en
    argument pour en faire un entier x qu'elle renvoie ainsi que le flot
    binaire restant. Si le flot passé en argument contient strictement moins
    de k éléments, on complète à droite avec des zéros (« right padding »).
    Dans tous les cas on obtient donc k bits.
k est strictement inférieur à n, les k bits de droite de x
    sont ceux qui ont été prélevés, ceux de gauche sont mis à zéro (« left
    padding »).k est strictement supérieur à n, les bits de x sont les n
    derniers prélevés (i.e. ceux de droite), les autres sont « perdus ».i est dit « k-bits » lorsque k≤n et que seuls ses k
    bits de droite peuvent être non nuls, autrement dit lorsque
    i = fst (pack_int k bs) 
    où bs est l'écriture binaire de i.val push_int_as_bits : int -> int -> bool MyStream.t -> bool MyStream.tk la valeur du premier argument, la fonction push_int_as_bits k prend
    les k bits de droite de l'écriture binaire de l'entier i passé en premier
    argument et les insère devant le (i.e. à gauche du) flot binaire passé en
    second argument.
k est strictement inférieur à n, les bits de gauche de l'entier
    i sont « perdus ».k est strictement supérieur à n, on complète à gauche avec des
    zéros (« left padding »).k≤n alors pour tout entier OCaml k-bits i, on a 
    pack_int k (unpack_int k i bs) = (i, bs). C'est en particulier le cas lorsque 
    l'on travaille avec des entier 8-bits (i.e. k=8).