答案 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
)
0
):D
(单元格=NOT(D2)*1
的公式,已复制到D3
)D4:D17
或*1
TRUE
的数字化处理
FALSE
(单元格=XOR(AND(D2:$D2),C2)*1
的公式,已复制到所有单元格C3
)A3:C17
LSB列,也向上引用一行。因此,LSB列的$D
锚点允许复制到其他任何列$D
用于对所得的*1
进行量化最后,如果您想要一个结果列(例如X),则可以使用相同的Excel逻辑函数来检查不同逻辑函数的逻辑等效性,例如 :
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))
答案 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
将数字从左到右、从上到下放置。