在excel中生成真值表

时间:2015-12-16 14:33:07

标签: excel excel-formula truthtable

我需要制作一个公式,为您提供可变数量列的真值表

实施例

sample 4-bit truth table

5 个答案:

答案 0 :(得分:4)

用对包含前2 ^ 1值的单元格的静态引用替换FirstCell,例如4位表(16个值)$ D $ 1并自动填充到网格的其余部分(在示例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.

答案 1 :(得分:1)

当前推荐的答案对我不起作用。对于更简单的方法,我建议使用以下公式:

=IF(MOD(FLOOR((ROW()-ROW(TopRight))/(2^(COLUMN(TopRight)-COLUMN())), 1),2)=0,0,1)

TopRight是真值表的右上角单元格。

例如,如果您要创建一个以A3开头的8个条目的真值表,请将TopRight替换为$H$3,然后在公式之间上下拖动。


发生的事情的基本解释:在真值表中,每隔2 ^ n行数,行交替1或0,其中n是给定列远离的列数最右边的列。

答案 2 :(得分:0)

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计算。

答案 3 :(得分:0)

其他答案可能会让布尔感到难过。这个目标是变得更布尔。

您需要用 const { openSidebar } = useContext(AppContext); 填充第一行(2

对于LSB列(0):

  • D(单元格=NOT(D2)*1的公式,已复制到D3
  • 这将反转上一行的值。为了避免看到D4:D17*1
  • ,必须进行TRUE的数字化处理

enter image description here

对于所有其他列:

  • FALSE(单元格=XOR(AND(D2:$D2),C2)*1的公式,已复制到所有单元格C3
  • 对于ADD函数,您希望将列中以上的值与右侧所有列中的所有位进行“与”运算的结果进行异或。
  • AND范围是向上引用一行,右向引用A3:C17 LSB列,也向上引用一行。因此,LSB列的$D锚点允许复制到其他任何列
  • 同样,$D用于对所得的*1进行量化

enter image description here



例如...

最后,如果您想要一个结果列(例如X),则可以使用相同的Excel逻辑函数来检查不同逻辑函数的逻辑等效性,例如

  • X:TRUE/FALSE
  • 与之相对:
  • 是:=NOT(OR(AND(OR(A2,B2),C2),AND(OR(C2,D2),A2),AND(B2,D2)))*1
  • 其中=NOT(AND(OR(G2,H2),OR(I2,J2)))*1列使用公式X==Y?的原因是因为没有=NOT(XOR(E2,K2))

enter image description here

答案 4 :(得分:0)

这是 Microsoft 365 one-liner:

=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 将数字从左到右、从上到下放置。