Генерация таблицы истинности в Excel

Мне нужно сделать формулу, которая дает вам таблицу истинности для переменного числа столбцов

Примеры

образец 4-битной таблицы истинности

5 ответов

Решение

Замените 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с

Для столбца LSB (D):

  • =NOT(D2)*1 (формула для ячейки D3, скопировано в D4:D17)
  • Это инвертирует значение из строки выше. В *1 нумификация необходима, чтобы не видеть TRUE или же FALSE

Для всех остальных столбцов:

  • =XOR(AND(D2:$D2),C2)*1 (формула для ячейки C3, скопировано во все ячейки A3:C17)
  • Для функции ADD вы хотите выполнить XOR для значения выше в столбце с результатом операции AND всех битов во всех столбцах справа.
  • Диапазон AND относится к одной строке вверх и одному столбцу справа, к $DСтолбец LSB, также на одну строку вверх. Так что $D привязка для столбца LSB позволяет копировать в любой другой столбец
  • Очередной раз, *1 используется для нумификации полученных TRUE/FALSE



Например...

Наконец, если вам нужен столбец результатов, например X, вы можете использовать те же логические функции Excel для проверки логической эквивалентности разных логических функций, например:

  • ИКС: =NOT(OR(AND(OR(A2,B2),C2),AND(OR(C2,D2),A2),AND(B2,D2)))*1
  • против:
  • Y: =NOT(AND(OR(G2,H2),OR(I2,J2)))*1
  • где X==Y? столбец использует формулу =NOT(XOR(E2,K2)) потому что нет XNOR

Вот однострочник 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.

Другие вопросы по тегам