Mettez la formule suivante dans chaque cellule de A à L, pour toutes les lignes de 1 à 4096
=IF(MOD(ROW() - 1, 2^(13 - COLUMN())) < 2^(12 - COLUMN()), 0, 1)
Si vous voulez le tout dans une chaîne avec des espaces comme ce que vous avez demandé, mettez cela dans la dernière colonne
=A1 & " " & B1 & " " & C1 & " " & D1 & " " & E1 & " " & F1 & " " & G1 & " " & H1 & " " & I1 & " " & J1 & " " & K1 & " " & L1
Faites ensuite glisser les rangées jusqu'au M4096
Pour une solution plus générale, mettez le nombre de bits dans une cellule, comme Z1, ou une cellule nommée comme NumOfBits
et utilisez la formule suivante
=IF(MOD(ROW() - 1, 2^(NumOfBits + 1 - COLUMN())) < 2^(NumOfBits - COLUMN()), 0, 1)
Il peut également être facilement modifié pour utiliser n'importe quelle cellule comme cellule de départ en modifiant le décalage de ligne et de colonne
Version optimisée utilisant des opérations au niveau du bit au lieu des pouvoirs:
=IF(BITAND(ROW() - 1, BITLSHIFT(1, 13 - COLUMN()) - 1) < BITLSHIFT(1, 12 - COLUMN()), 0, 1)
=IF(BITAND(ROW() - 1, BITLSHIFT(1, NumOfBits + 1 - COLUMN()) - 1) < BITLSHIFT(1, NumOfBits - COLUMN()), 0, 1)
La façon la plus rapide:
- Copiez l'une des formules ci-dessus
- Appuyez sur F5(ou Ctrl+G ) et entrez A1: L4096 pour sélectionner toute la plage
- Appuyez F2ensuite sur Ctrl+V pour coller
- Appuyez sur Ctrl+ Shift+ Enter. Boom. Vous avez terminé. Pas besoin de traîner
C'est une formule matricielle qui est beaucoup plus rapide à calculer et à produire un fichier beaucoup plus petit
Explication:
Si nous écrivons toutes les représentations binaires dans des lignes de haut en bas, le cycle de basculement / basculement du nième bit (en comptant à partir du lsb) est de 2 n . Dans chaque cycle, la première moitié (de 0 à 2 n-1 -1) sera 0 et la dernière moitié sera 1. Par exemple, le lsb (premier bit de droite) alternera tous les 2 1-1 = 1 bit, le deuxième bit bascule tous les 2 2-1 = 2 bits ...
En conséquence, nous prendrons modulo 2 n pour obtenir la position actuelle du nombre dans le cycle, s'il est inférieur à 2 n-1, c'est un bit zéro, sinon c'est un.