邏輯運算、位元運算
文章推薦指數: 80 %
接下來看看位元運算子(Bitwise operator),數位設計上有AND、OR、NOT、XOR 與補數等運算,在C 中提供這些運算的就是位元運算子,它們的對應分別是AND ( & )、OR( ...
回C語言目錄
在邏輯上有所謂的「且」、「或」與「反」運算,在C中也提供這幾個基本邏輯運算所需的邏輯運算子(Logicaloperator),分別為「且」(&&)、「或」(||)及「反相」(!)三個運算子。
來看看下面這個程式會輸出什麼?
#include
&&運算中,如果左邊的式子已被評斷為假,則可立即判斷整個式子為假,因而右邊的式子就不會再評斷;||運算中如果左邊的式子已經被評斷為真,則可以判斷整個式子為真,因而右邊的式子就不會再評斷。
接下來看看位元運算子(Bitwiseoperator),數位設計上有AND、OR、NOT、XOR與補數等運算,在C中提供這些運算的就是位元運算子,它們的對應分別是AND(&)、OR(|)、NOT(!)、XOR(^)與補數(~)。
如果不會基本的位元運算,這邊可以提供一個程式來顯示各個運算的結果:
#include
要注意的是,邏輯運算子與位元運算子也是很常被混淆的,像是&&為邏輯運算,而&為位元運算,||為邏輯運算,而|為位元運算,初學時可得多注意。
位元運算對初學者來說的確較不常用,但如果用的洽當的話,可以增進不少程式效率,例如下面這個程式可以判斷使用者的輸入是否為奇數:
#include
要注意的是,雖然在說明時都只取8個位元來說明,但實際的位元在運算時,需依資料型態所佔的記憶體長度而定,例如在使用int型態的0作運算時,要考慮的是32個位元,而不是只有8個位元,因為int佔有4個位元組。
在位元運算上,C還有左移(<>)兩個運算子,左移運算子會將所有的位元往左移指定的位數,左邊被擠出去的位元會被丟棄,而右邊會補上0;右移運算則是相反,會將所有的位元往右移指定的位數,右邊被擠出去的位元會被丟棄,至於左邊位元補0或補1則不一定,視系統而定。
可以使用左移運算來作簡單的2次方運算示範,如下所示:
#include
延伸文章資訊
- 1邏輯運算、位元運算
接下來看看位元運算子(Bitwise operator),數位設計上有AND、OR、NOT、XOR 與補數等運算,在C 中提供這些運算的就是位元運算子,它們的對應分別是AND ( & )、OR(...
- 2Not 運算子
此外,Not 運算子會將任何變數的位值逆轉,並根據下表在result 中設定對應的位。 如果bit in 運算式是, 結果中的位是. 0, 1. 1, 0 ...
- 3運算式與運算子- JavaScript
這個章節將講述JavaScript 的運算式與運算子,包括賦值運算子,比較運算子,算術運算子,位元運算子, 邏輯運算子, 字串運算子, 條件(三元)運算子以及 ...
- 4NOT運算_百度百科
在邏輯中,NOT運算是一種操作,它將命題P帶到另一個命題“非P”,寫為¬P,當P為假時直觀地解釋為真,而當P為真時則為假。 因此,否定是一元(單一論證)邏輯連詞。
- 5[C++] 位元運算子(NOT)與2 補數 - Medium
在介紹運算子的章節對於這個NOT 有點不太理解只知道他是反向,把1 變0、0 變1。 有個練習題目是這樣: #include <iostream>using namespace std;int ...