定義
關於否定性的可能性,關於其邏輯地位,功能和意義,關於其適用範圍......以及對否定判斷的解釋,沒有達成協定。
經典否定是對一個邏輯值的操作,通常是命題的值,當其運算元為假時產生值為true,當運算元為真時產生值為false。 因此,如果陳述P為真,那么¬P(發音為“not P”)將因此為假; 相反,如果¬P為假,則P為真。
¬P的真值表如下:
否定可以根據其他邏輯操作來定義。 例如,¬P可以定義為P→⊥(其中→是邏輯結果,⊥是絕對虛假)。 相反,對於任何命題Q(其中∧是邏輯連詞),可以將define定義為Q∧¬Q。 這裡的想法是任何矛盾都是錯誤的。 雖然這些思想既有經典邏輯又有直覺邏輯,但它們並不適用於矛盾的邏輯,而矛盾並不一定是錯誤的。 在經典邏輯中,我們還得到了進一步的同一性,P→Q可以定義為¬P∨Q,其中∨是邏輯析取。
在代數上,經典否定對應於布爾代數中的互補,以及對Heyting代數中的偽實現的直覺否定。 這些代數分別為經典和直覺邏輯提供了語義。
符號
在各種討論環境和套用領域中,對命題P的否定以不同方式表示。 這些變體包括以下內容:
符號 | 叫法 |
¬P | Not p |
~P | Not p |
-P | Not p |
Np | En p |
| p prime p complement |
| p bar bar p |
!p | Bang p Not 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切換為0和0到1。請參閱按位操作。這通常用於在C或C ++中創建一個補碼或“〜”和兩個補碼(簡化為“ - ”或負號,因為它相當於取數字的算術負值),因為它基本上創建了相反的(負值等價物)或數值的數學補充(兩個值加在一起形成一個整體)。
為了獲得給定整數的絕對(正等效)值,以下將起作用,因為“ - ”將其從負變為正(它是負的,因為“x <0”產生真)
unsigned int abs(int x) { if (x < 0) return -x; else return x; }
為了證明邏輯否定:
unsigned int abs(int x) { if (!(x < 0)) return x; else return -x; }
反轉條件並反轉結果產生邏輯上等同於原始代碼的代碼,即對於任何輸入將具有相同的結果(注意,根據所使用的編譯器,計算機執行的實際指令可能不同)。
這種慣例偶爾會出現在書面語言中,而不是計算機相關的俚語。 例如,投票是指“不投票”。