Генерация таблицы истинности в Excel
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.