Ponga la siguiente fórmula en cada celda de A a L, para todas las filas del 1 al 4096
=IF(MOD(ROW() - 1, 2^(13 - COLUMN())) < 2^(12 - COLUMN()), 0, 1)
Si quieres todo en una cadena con espacios como lo que pediste, pon esto en la última columna
=A1 & " " & B1 & " " & C1 & " " & D1 & " " & E1 & " " & F1 & " " & G1 & " " & H1 & " " & I1 & " " & J1 & " " & K1 & " " & L1
Luego arrastre las filas hasta el final hasta M4096
Para una solución más general, coloque el número de bits en alguna celda, como Z1, o una celda con nombre NumOfBits
y use la siguiente fórmula
=IF(MOD(ROW() - 1, 2^(NumOfBits + 1 - COLUMN())) < 2^(NumOfBits - COLUMN()), 0, 1)
También se puede modificar fácilmente para usar cualquier celda como celda inicial cambiando el desplazamiento de fila y columna
Versión optimizada que utiliza operaciones bit a bit en lugar de potencias:
=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 manera mas rapida:
- Copie cualquiera de las fórmulas anteriores
- Presione F5(o Ctrl+ G) e ingrese A1: L4096 para seleccionar todo el rango
- Presione F2luego Ctrl+ Vpara pegar
- Presione Ctrl+ Shift+ Enter. Auge. Ya terminaste No es necesario arrastrar
Es una fórmula de matriz que es mucho más rápida de calcular y producir un archivo mucho más pequeño
Explicación:
Si escribimos todas las representaciones binarias en filas de arriba a abajo, el ciclo de alternar / alternar el enésimo bit (contando desde lsb) es 2 n . En cada ciclo, la primera mitad (de 0 a 2 n-1 -1) será 0 y la última mitad será 1. Por ejemplo, lsb (primer bit desde la derecha) alternará cada 2 1-1 = 1 bit, el segundo bit se alternará cada 2 2-1 = 2 bits ...
Como resultado, tomaremos el módulo 2 n para obtener la posición actual del número en el ciclo, si es menor que 2 n-1 es un bit cero, de lo contrario es uno.