版权归原作者所有,如有侵权,请联系我们

[科普中国]-NOT运算

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

在逻辑中,NOT运算是一种操作,它将命题P带到另一个命题“非P”,写为¬P,当P为假时直观地解释为真,而当P为真时则为假。 因此,否定是一元(单一论证)逻辑连词。 它可以更普遍地用作对概念,命题,真值或语义值的操作。 在经典逻辑中,否定通常用真值函数来识别,该真值函数将真值用于虚假,反之亦然。 在直觉主义逻辑中,根据Brouwer-Heyting-Kolmogorov解释,命题P的否定是其证明是P的反驳的命题。

定义关于否定性的可能性,关于其逻辑地位,功能和意义,关于其适用范围......以及对否定判断的解释,没有达成协议。

经典否定是对一个逻辑值的操作,通常是命题的值,当其操作数为假时产生值为true,当操作数为真时产生值为false。 因此,如果陈述P为真,那么¬P(发音为“not P”)将因此为假; 相反,如果¬P为假,则P为真。

¬P的真值表如下:

|| ||

否定可以根据其他逻辑操作来定义。 例如,¬P可以定义为P→⊥(其中→是逻辑结果,⊥是绝对虚假)。 相反,对于任何命题Q(其中∧是逻辑连词),可以将define定义为Q∧¬Q。 这里的想法是任何矛盾都是错误的。 虽然这些思想既有经典逻辑又有直觉逻辑,但它们并不适用于矛盾的逻辑,而矛盾并不一定是错误的。 在经典逻辑中,我们还得到了进一步的同一性,P→Q可以定义为¬P∨Q,其中∨是逻辑析取。

在代数上,经典否定对应于布尔代数中的互补,以及对Heyting代数中的伪实现的直觉否定。 这些代数分别为经典和直觉逻辑提供了语义。

符号在各种讨论环境和应用领域中,对命题P的否定以不同方式表示。 这些变体包括以下内容:

|| ||

在集合论中,∖也用于表示“不是成员”:U∖A是U的所有成员的集合,不是A的成员。无论如何标记或符号化,否定¬P可以被解读为“不是P”,“不是P”,或者通常更简单地称为“非P”。

编程在数学中,否定被用于计算机科学以构建逻辑陈述。

if (!(r == t)) { /*...statements executed when r does NOT equal t...*/ }“!”表示B,C和具有C语言语言(如C ++,Java,JavaScript,Perl和PHP)的语言中的逻辑NOT。 “NOT”是ALGOL 60,BASIC中使用的运算符,以及具有ALGOL或BASIC启发语法的语言,如Pascal,Ada,Eiffel和Seed7。某些语言(C ++,Perl等)提供了多个用于否定的运算符。一些语言如PL / I和Ratfor使用¬进行否定。一些现代计算机和操作系统将显示为!用ASCII编码的文件。大多数现代语言允许将上述语句从if(!(r == t))缩短为if(r!= t),这有时允许编译器/解释器无法优化它,更快的程序1。

在计算机科学中,也存在逐位否定。这取得给定的值并将所有二进制1切换为0和0到1。请参阅按位操作。这通常用于在C或C ++中创建一个补码或“〜”和两个补码(简化为“ - ”或负号,因为它相当于取数字的算术负值),因为它基本上创建了相反的(负值等价物)或数值的数学补充(两个值加在一起形成一个整体)。

为了获得给定整数的绝对(正等效)值,以下将起作用,因为“ - ”将其从负变为正(它是负的,因为“x