Aşağıdaki formülü 1 ila 4096 arasındaki bütün satırlar için A'dan L'ye her hücreye yerleştirin.
=IF(MOD(ROW() - 1, 2^(13 - COLUMN())) < 2^(12 - COLUMN()), 0, 1)
Her şeyi bir dizgede istiyorsan boşluklu İstediğin gibi, bunu da son sütuna koy.
=A1 & " " & B1 & " " & C1 & " " & D1 & " " & E1 & " " & F1 & " " & G1 & " " & H1 & " " & I1 & " " & J1 & " " & K1 & " " & L1
A4096: L4096'ya kadar tüm yolu sürükleyin
Genel bir çözüm için, Z1 gibi bazı hücrelere bit sayısını veya benzeri hücreye adlandırılmış NumOfBits
ve aşağıdaki formülü kullanın
=IF(MOD(ROW() - 1, 2^(NumOfBits + 1 - COLUMN())) < 2^(NumOfBits - COLUMN()), 0, 1)
Optimize edilmiş versiyon:
=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)
Açıklama:
Tüm ikili gösterimleri satırlar halinde yukarıdan aşağıya yazarsak, nth-bit'in çevirme / değiştirme döngüsü (lsb'den sayım) 2 olur. n . Her çevrimde ilk yarı (0'dan 2'ye kadar) N-1 -1) 0 olur ve son yarı 1 olur. Örneğin, lsb (sağdan ilk bit) her 2'yi değiştirir 1-1 = 1 bit, ikinci bit her 2'yi değiştirir 2-1 = 2 bit ...
Sonuç olarak modulo 2'yi alacağız. n 2'den küçükse, sayının döngüdeki geçerli konumunu almak için N-1 bu sıfır biti, yoksa bir tane.