Fügen Sie in jede Zelle von A bis L für alle Zeilen von 1 bis 4096 die folgende Formel ein
=IF(MOD(ROW() - 1, 2^(13 - COLUMN())) < 2^(12 - COLUMN()), 0, 1)
Wenn Sie das Ganze in einer Zeichenfolge mit Leerzeichen wie dem, was Sie gefragt haben, wollen, setzen Sie dies in die letzte Spalte
=A1 & " " & B1 & " " & C1 & " " & D1 & " " & E1 & " " & F1 & " " & G1 & " " & H1 & " " & I1 & " " & J1 & " " & K1 & " " & L1
Ziehen Sie dann die Zeilen bis M4096
Geben Sie für eine allgemeinere Lösung die Anzahl der Bits in eine Zelle wie Z1 oder eine benannte Zelle wie NumOfBitsund verwenden Sie die folgende Formel
=IF(MOD(ROW() - 1, 2^(NumOfBits + 1 - COLUMN())) < 2^(NumOfBits - COLUMN()), 0, 1)
Sie kann auch einfach geändert werden, um eine beliebige Zelle als Startzelle zu verwenden, indem Sie den Zeilen- und Spaltenversatz ändern
Optimierte Version mit bitweisen Operationen anstelle von Kräften:
=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)
Schnellster Weg:
- Kopieren Sie eine der obigen Formeln
- Drücken Sie F5(oder Ctrl+ G) und geben Sie A1: L4096 das gesamte Spektrum wählen
- Drücken Sie F2dann Ctrl+, Vum einzufügen
- Drücken Sie Ctrl+ Shift+ Enter. Boom. Sie sind fertig. Sie müssen nicht ziehen
Es ist eine Matrixformel, die viel schneller berechnet und eine viel kleinere Datei erzeugt
Erläuterung:
Wenn wir alle binären Darstellungen in Zeilen von oben nach unten schreiben, beträgt der Kipp- / Umschaltzyklus des n-ten Bits (ab lsb) 2 n . In jedem Zyklus ist die erste Hälfte (von 0 bis 2 n-1 -1) 0 und die letzte Hälfte ist 1. Zum Beispiel wechselt das lsb (erstes Bit von rechts) alle 2 1-1 = 1 Bit. das zweite Bit schaltet alle 2 2-1 = 2 Bits um ...
Infolgedessen nehmen wir modulo 2 n , um die aktuelle Position der Zahl im Zyklus zu ermitteln. Wenn sie kleiner als 2 n-1 ist, ist sie ein Null-Bit, andernfalls ist sie eine Eins.