首先,在“邏輯”這個概念范疇內(nèi),存在真和假這兩個邏輯值,而將其對應(yīng)到數(shù)字電路或 C 語言中,就變成了“非 0 值”和“0 值”這兩個值,即邏輯上的“假”就是數(shù)字電路或C 語言中的“0”這個值,而邏輯“真”就是其它一切“非 0 值”。然后,我們來具體分析一下幾個主要的邏輯運(yùn)算符。我們假定有 2 個字節(jié)變量:A 和 B,二者進(jìn)行某種邏輯運(yùn)算后的結(jié)果為 F。以下邏輯運(yùn)算符都是按照變量整體值進(jìn)行運(yùn)算的,通常就叫做邏輯運(yùn)算符:
邏輯運(yùn)算符 | 說明 |
---|---|
&& 邏輯與 | F = A && B,當(dāng) A、B 的值都為真(即非 0 值,下同)時,其運(yùn)算結(jié)果 F為真(具體數(shù)值為1,下同);當(dāng) A、B 值任意一個為假(即 0,下同)時,結(jié)果 F 為假(具體數(shù)值為 0,下同)。 |
|| 邏輯或 | F = A || B,當(dāng) A、B 值任意一個為真時,其運(yùn)算結(jié)果 F 為真;當(dāng) A、B 值都為假時,結(jié)果 F 為假。 |
! 邏輯非 | F = !A,當(dāng) A 值為假時,其運(yùn)算結(jié)果 F 為真;當(dāng) A 值為真時,結(jié)果 F 為假。 |
以下邏輯運(yùn)算符都是按照變量內(nèi)的每一個位來進(jìn)行運(yùn)算的,通常就叫做位運(yùn)算符:
邏輯運(yùn)算 | 說明 |
---|---|
& 按位與 | F = A & B,將 A、B 兩個字節(jié)中的每一位都進(jìn)行與運(yùn)算,再將得到的每一位結(jié)果組合為總結(jié)果 F,例如 A = 0b11001100,B = 0b11110000,則結(jié)果 F 就等于 0b11000000。 |
| 按位或 | F = A | B,將 A、B 兩個字節(jié)中的每一位都進(jìn)行或運(yùn)算,再將得到的每一位結(jié)果組合為總結(jié)果 F,例如 A = 0b11001100,B = 0b11110000,則結(jié)果 F 就等于 0b11111100。 |
~ 按位取反 | F = ~A,將 A 字節(jié)內(nèi)的每一位進(jìn)行非運(yùn)算(就是取反),再將得到的每一位結(jié)果組合為總結(jié)果 F,例如 A = 0b11001100,則結(jié)果 F 就等于 0b00110011;這個運(yùn)算符我們在前面的流水燈實驗里已經(jīng)用過了,現(xiàn)在再回頭看一眼,是不是清楚多了。 |
^ 按位異或 | 異或的意思是,如果運(yùn)算雙方的值不同(即相異)則結(jié)果為真,雙方值相同則結(jié)果為假。在 C 語言里沒有按變量整體值進(jìn)行的異或運(yùn)算,所以我們僅以按位異或為例,F(xiàn) = A ^ B,A = 0b11001100,B = 0b11110000,則結(jié)果 F 就等于 0b00111100。 |
我們今后要看資料或芯片手冊的時候,會經(jīng)常遇到一些電路符號,圖 5-1 所示就是數(shù)字電路中的常用符號,知道這些符號有利于我們理解器件的邏輯結(jié)構(gòu),尤其重點(diǎn)認(rèn)識圖 5-1 中的國外流行圖形符號。在這里我們先簡單看一下,如果日后遇到了可以到這里來查閱。
-
單片機(jī)
+關(guān)注
關(guān)注
6042文章
44617瀏覽量
637534 -
C語言
+關(guān)注
關(guān)注
180文章
7614瀏覽量
137421 -
數(shù)字電路
+關(guān)注
關(guān)注
193文章
1629瀏覽量
80751 -
邏輯運(yùn)算
+關(guān)注
關(guān)注
0文章
57瀏覽量
9775
原文標(biāo)題:單片機(jī)邏輯電路與邏輯運(yùn)算
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論