Мне нужно составить формулу, которая даст вам таблицу истинности для переменного количества столбцов.
Пример
Мне нужно составить формулу, которая даст вам таблицу истинности для переменного количества столбцов.
Пример
Замените FirstCell статической ссылкой на ячейку, которая содержит первое значение 2 ^ 1, например. $D$1 для 4-битной таблицы (16 значений) и автозаполнение остальной части сетки (в примере A1:D16)
=IF(MOD(ROW()-ROW(FirstCell),POWER(2, ((COLUMN() - COLUMN(FirstCell)) * -1) + 1)) >= (POWER(2, ((COLUMN() - COLUMN(FirstCell)) * -1) + 1) / 2),1,0)
Логика этого такова:
Если текущая строка модуля 2 столбца силы тока (* -1, так как первое значение находится в последнем столбце и + 1, потому что оно начинается с 0) больше или равно половине 2 столбца силы тока, поместите значение как 1, иначе поставить значение 0.
Текущий рекомендуемый ответ мне не помог. Для более простого метода я бы рекомендовал следующую формулу:
=IF(MOD(FLOOR((ROW()-ROW(TopRight))/(2^(COLUMN(TopRight)-COLUMN())), 1),2)=0,0,1)
Где TopRight
— верхняя правая ячейка таблицы истинности.
Например, если вы создаете таблицу истинности с 8 записями, которая начинается с A3
, замените TopRight
на $H$3
, а затем перетащите формулу из стороны в сторону и вниз.
Основное объяснение того, что происходит: в таблицах истинности строки чередуются 1 или 0 каждые 2 ^ n
количества строк, где n
— это количество столбцов, на которое данный столбец отстоит от крайнего правого столбца.
Другие ответы могут расстроить Буля. Этот стремится быть более логическим.
Вам нужно заполнить первую строку (2
) 0
D
) — инвертировать:=NOT(D2)*1
(формула для ячейки D3
, скопирована в D4:D17
)*1
необходима, чтобы не видеть TRUE
или FALSE
=XOR(AND(D2:$D2),C2)*1
(формула для ячейки C3
, скопирована во все ячейки A3:C17
)$D
LSB, а также на одну строку вверх. Таким образом, якорь $D
для столбца LSB позволяет копировать в любой другой столбец.*1
используется для нумерации результирующего TRUE/FALSE
.Вот однострочный Microsoft 365:
=TRANSPOSE(LET(n,5,m,2^n,x,SEQUENCE(n,m,0),y,FLOOR(x/m,1),z,FLOOR((x-y*m)/2^(n-1-y),1),MOD(z,2)))
n
- это количество необходимых столбцов, m
затем сохраняет длину каждого столбца.
Формула находит строку x
и сохраняет значение в y
, а затем последовательно делит каждую строку пополам в правильном формате и выводит результат mod 2
для получения набора входных данных таблицы истинности.
TRANSPOSE
используется, потому что SEQUENCE
помещает числа слева направо, сверху вниз.
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
.....
помните, что цифры только 0 или 1.
для столбца D: D2=1-D1
для столбца C: C2=IF(D1=1,1-D1,D1)
для столбца B: B2=IF((C1=1)*(D1=1),1-B1, B1)
.....
После этого скопируйте числа без формул для вашей таблицы истинности, чтобы избежать вычислений в Excel.