我听说C语言为和&&或||的表格为false 是一种数学,他们说如果真实+真实=真假,真假=真假
我只是对此感到困惑,我试图进行研究,但找不到任何表格
我只想把这张桌子作为我的笔记,因为我会用C语言做更多的事情
如果有人可以带我到网站或资源,他们解释这个更多
我编辑了我的原始问题,使其成为我自己研究的一个注释.感谢@thiton提供了很好的参考资料,其余的则提供了很棒的答案/资源.
Logical AND (&&)
false && false: false
false && true: false
true && false: false
true && true: true
逻辑OR(||)
false || false: false
false || true: true
true || false: true
true || true: true
逻辑NOT(!)
!false: true
!true: false
我的问题很简单:"如何以优雅的方式在python中构建一个动态增长的真值表?"
对于n = 3
for p in False, True:
for q in False, True:
for r in False, True:
print '|{0} | {1} | {2} |'.format(int(p),int(q), int(r))
Run Code Online (Sandbox Code Playgroud)
对于n = 4
for p in False, True:
for q in False, True:
for r in False, True:
for s in False, True:
print '|{0} | {1} | {2} | {3}'.format(int(p),int(q), int(r), int(s))
Run Code Online (Sandbox Code Playgroud)
我想有一个函数,它将n作为参数并构建表,没有必要打印表,返回表示表的数据结构也很好.
我正在寻找一个真理表生成器作为个人项目.
(Example screenshot of an existing Truth Table Generator
)
我有以下问题:
任何人都可以向我提供有关解析这些任意表达式并最终评估解析表达式的提示吗?
考虑一下这个函数,您可以将其视为真值表:
public Foo doSomething(bool a, bool b) {
if ( a && b) return doAB();
else if ( a && !b) return doA();
else if (!a && b) return doB();
else if (!a && !b) return doNotANotB();
else throw new Exception("Well done, you defeated boolean logic!");
}
Run Code Online (Sandbox Code Playgroud)
编译器坚持最后一个else
子句.但从真相表的角度来看,这是一个不可能的状态.
是的,它有效,是的,我可以忍受它.但是我想知道c#中是否有一些机制来避免这种代码,或者我是否错过了一些明显的东西?
更新:
对于奖励积分,纯粹出于好奇,是否有任何语言以不同的方式处理这类事情?也许这不是一个语言问题,而是一个智能编译器(但我认为边缘情况将是难以想象的复杂).
我有一个(有点)大的真值表/状态机,我需要在我的代码(嵌入式C)中实现.我预计这个状态机的行为规范将来会发生变化,所以我希望将来可以很容易地修改它.
我的真值表有4个输入和4个输出.我在Excel电子表格中拥有这一切,如果我可以通过一点格式将其粘贴到我的代码中,那将是理想的选择.
我以为我想像我这样访问我的真值表:
u8 newState[] = decisionTable[input1][input2][input3][input4];
Run Code Online (Sandbox Code Playgroud)
然后我可以访问输出值:
setOutputPin( LINE_0, newState[0] );
setOutputPin( LINE_1, newState[1] );
setOutputPin( LINE_2, newState[2] );
setOutputPin( LINE_3, newState[3] );
Run Code Online (Sandbox Code Playgroud)
但为了得到它,看起来我必须做一个相当混乱的表,如下所示:
static u8 decisionTable[][][][][] =
{{{{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 }},
{{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 }}},
{{{ 0, 0, 1, 1 },
{ 0, 1, 1, 1 }},
{{ 0, 1, 0, 1 },
{ 1, 1, 1, 1 }}}},
{{{{ 0, 1, …
Run Code Online (Sandbox Code Playgroud) 我有许多变量(7或更多)的真值表,我使用工具(例如逻辑星期五1)来简化逻辑公式.我可以手工完成,但这太容易出错了.这些公式然后转换为编译器内在函数(例如_mm_xor_epi32),它工作正常.
问题:使用vpternlog我可以进行三元逻辑运算.但我不知道一种方法来简化我的真值表到vpternlog指令序列(有些)有效.
我不是在问是否有人知道一个简化为任意三元逻辑运算的工具,虽然这很好,但我正在寻找一种方法来进行这种简化.
编辑:我问了一个关于电气工程的类似问题.
我正在尝试打印一些真值表作为学校作业的一部分.如何在Java中生成动态大小的真值表?
这样printTruthTable(1)
打印:
0
1
Run Code Online (Sandbox Code Playgroud)
printTruthTable(3)
打印:
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
Run Code Online (Sandbox Code Playgroud)
等等.我一直在尝试使用递归来实现它,但我无法做到正确.
我正在尝试为给定的布尔表达式生成真值表.我可以通过创建一个新的数据类型BoolExpr来做到这一点,但我想用匿名函数来做.它应该像这样工作:
> tTable (\x y -> not (x || y))
output:
F F | T
F T | F
T F | F
T T | F
Run Code Online (Sandbox Code Playgroud)
我的方法:
tbl p = [(uncurry p) tuple | tuple <- allval]
where allval=[(x,y) | x <- [False,True], y <- [False,True]]
Run Code Online (Sandbox Code Playgroud)
这有效,但仅适用于2个参数.我想为任意数量的参数做这件事.所以我想我会创建一个从List获取Arguments的函数:
argsFromList f [] = f
argsFromList f (x:xs) = argsFromList (f x) xs
Run Code Online (Sandbox Code Playgroud)
这不起作用:
Occurs check: cannot construct the infinite type: t = t1 -> t
Expected type: t -> [t1] -> …
Run Code Online (Sandbox Code Playgroud) 是否有逻辑AND的名称与~
第二个变量的negation(),即:
A & (~B)
Run Code Online (Sandbox Code Playgroud)
这种操作的真值表是:
0 & (~0) = 0
0 & (~1) = 0
1 & (~0) = 1
1 & (~1) = 0
Run Code Online (Sandbox Code Playgroud)
在较长的比特序列中,
A = 10110011
B = 10111001
A & B = 10110001
A &(~B) = 00000010
Run Code Online (Sandbox Code Playgroud)
PS - 我也对OR的第二个变量的否定感兴趣.
我跑过这个真值表生成器站点,并试图用PHP模仿它(我意识到源代码是可用的,但我知道0 perl).
现在我的问题不是评估表达式,而是如何输出表格,以便显示变量的T和F的每个组合
例如,对于3个变量,表格看起来像这样:
a | b | c
-----------
T | T | T
T | T | F
T | F | T
T | F | F
F | T | T
F | T | F
F | F | T
F | F | F
Run Code Online (Sandbox Code Playgroud)
并有4个变量..
a | b | c | d
-------------
T | T | T | T
T | T | T | F
T | T …
Run Code Online (Sandbox Code Playgroud) truthtable ×10
c ×2
c# ×2
logic ×2
.net ×1
avx512 ×1
boolean ×1
exception ×1
haskell ×1
intrinsics ×1
java ×1
nomenclature ×1
parsing ×1
php ×1
python ×1