9

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

例子

示例 4 位真值表

4

5 回答 5

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 power current column (* -1 as the first value is in the last column and + 1 because it from 0 start) 大于或等于 2 power current column 的一半,则将该值设为 1,否则将值设为 0。

于 2015-12-16T14:33:06.560 回答
5

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

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

TopRight真值表右上角的单元格在哪里。

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


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

于 2019-03-01T19:05:08.650 回答
2

其他答案可能会让布尔感到难过。这个旨在更加布尔。

您需要用's填充第一行 ( 2)0

对于 LSB 列 ( D) - 反转:

  • =NOT(D2)*1 (单元格的公式D3,复制到D4:D17
  • 这将反转上面行的值。*1数字化是必要的,以避免看到TRUEFALSE

在此处输入图像描述

对于所有其他列 - 添加:

  • =XOR(AND(D2:$D2),C2)*1(单元格的公式C3,复制到所有单元格A3:C17
  • 对于 ADD 函数,您希望将列中的上述值与它右侧所有列中的所有位的结果进行异或。(换句话说:如果上位右侧的所有位都是 1,那么您应该翻转上位的值。此 ADD 公式适用于任意数量的列。
  • AND 范围被引用到上一排和右一列,到$DLSB 列,也是上一排。因此$DLSB 列的锚点允许复制到任何其他列
  • 同样,*1用于计算结果TRUE/FALSE

在此处输入图像描述

于 2020-11-26T03:44:14.180 回答
0

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

于 2021-07-02T05:47:21.947 回答
-1
0 0 0 0  
0 0 0 1   
0 0 1 0   
0 0 1 1   
0 1 0 0    
.....   

记住数字只有 0 或 1。

DD2=1-D1
列:CC2=IF(D1=1,1-D1,D1)
列:B 列:B2=IF((C1=1)*(D1=1),1-B1, B1)
.....

完成此操作后,为您的真值表复制没有公式的数字以避免 Excel 计算。

于 2018-06-24T18:45:33.807 回答