不是(!)逻辑的重点是什么?看起来你可以做所有其他逻辑运算符无法做到的事情。有什么东西是我无法做到的吗?
答案 0 :(得分:1)
你不会否认编程语言中的NOT-operator非常方便,即使其他运算符和内置常量可用 语言使它严格冗余。 便利是一个充分的理由 - 实际上它是 理由 - 几乎所有一般的所有功能 编程语言。如果我们不关心便利性 - 在编程中,这意味着生产力 - 我们可以用一组来编写所有程序 图灵完整的操作码甚至比任何汇编语言都小得多。
在没有NOT运算符的情况下,您将面临的不便程度取决于您正在考虑的编程语言 关于语言提供的其他运算符和内置常量及其语义。
例如,在C中,存在等于运算符==
,但没有表示真值和虚假的内置常量:所有位为0的任何整数值在布尔运算和所有其他积分中表现为虚假价值观表现为真理。如果!cond
计算非零,则cond
计算结果为0,否则计算结果为1
要说cond
如果没有编码!cond
就不行,你必须编码cond == 0
,至少要进行2次击键。
与C类似,C ++具有相等和不等式运算符,但与C不同,它表示内置常量true
和false
的布尔值真值。从而
如果{C}没有编码cond
,则!cond
不正确,您必须编码cond != true
或cond == false
,至少需要5次击键。
没有NOT操作员的成本可能会带来轻微的不便。您可以先了解以下哪项?:
!(p && !q) == (!p || q)
或:
(((p && (q == 0)) == 0) == ((p == 0) || q)
答案 1 :(得分:0)
您可以仅使用NAND运算符实现所有逻辑运算符。 NOT运算符是为了方便起见,就像所有其他运算符一样。事实上,计算机系统仅使用NAND或NOR运算符实现。为方便起见,所有其他运营商都是抽象的。
方便。既然你提到了"!"运算符,我假设你的意思是一般编程语言中的布尔运算符。然后not运算符非常方便。想象一下,你想表达类似"打印所有名称,除了' Bob'"。您可以使用!=运算符执行此操作,这是!(expression1 == expression2)的进一步简短形式:
if( !(name == 'Bob') ) {
print name
}