邏輯電路與邏輯運算

在數字電路,我們經常會遇到邏輯電路,而在 C 語言中,我們則經常用到邏輯運算。二者在原理上是相互關聯的,我們在這裏就先簡單介紹一下,隨着學習的深入,再慢慢加深理解。

首先,在“邏輯”這個概念範疇內,存在真和假這兩個邏輯值,而將其對應到數字電路或 C 語言中,就變成了“非 0 值”和“0 值”這兩個值,即邏輯上的“假”就是數字電路或C 語言中的“0”這個值,而邏輯“真”就是其它一切“非 0 值”。

然後,我們來具體分析一下幾個主要的邏輯運算符。我們假定有 2 個字節變量:A 和 B,二者進行某種邏輯運算後的結果爲 F。

以下邏輯運算符都是按照變量整體值進行運算的,通常就叫做邏輯運算符
邏輯運算符 說明
&& 邏輯與 F = A && B,當 A、B 的值都爲真(即非 0 值,下同)時,其運算結果 F爲真(具體數值爲1,下同);當 A、B 值任意一個爲假(即 0,下同)時,結果 F 爲假(具體數值爲 0,下同)。
|| 邏輯或 F = A || B,當 A、B 值任意一個爲真時,其運算結果 F 爲真;當 A、B 值都爲假時,結果 F 爲假。
! 邏輯非 F = !A,當 A 值爲假時,其運算結果 F 爲真;當 A 值爲真時,結果 F 爲假。

以下邏輯運算符都是按照變量內的每一個位來進行運算的,通常就叫做位運算符
邏輯運算 說明
& 按位與 F = A & B,將 A、B 兩個字節中的每一位都進行與運算,再將得到的每一位結果組合爲總結果 F,例如 A = 0b11001100,B = 0b11110000,則結果 F 就等於 0b11000000。
| 按位或 F = A | B,將 A、B 兩個字節中的每一位都進行或運算,再將得到的每一位結果組合爲總結果 F,例如 A = 0b11001100,B = 0b11110000,則結果 F 就等於 0b11111100。
~ 按位取反 F = ~A,將 A 字節內的每一位進行非運算(就是取反),再將得到的每一位結果組合爲總結果 F,例如 A = 0b11001100,則結果 F 就等於 0b00110011;這個運算符我們在前面的流水燈實驗裏已經用過了,現在再回頭看一眼,是不是清楚多了。
^ 按位異或 異或的意思是,如果運算雙方的值不同(即相異)則結果爲真,雙方值相同則結果爲假。在 C 語言裏沒有按變量整體值進行的異或運算,所以我們僅以按位異或爲例,F = A ^ B,A = 0b11001100,B = 0b11110000,則結果 F 就等於 0b00111100。

我們今後要看資料或芯片手冊的時候,會經常遇到一些電路符號,圖 5-1 所示就是數字電路中的常用符號,知道這些符號有利於我們理解器件的邏輯結構,尤其重點認識圖 5-1 中的國外流行圖形符號。在這裏我們先簡單看一下,如果日後遇到了可以到這裏來查閱。
圖 5-1  邏輯電路符號
圖 5-1  邏輯電路符號
發佈了7 篇原創文章 · 獲贊 24 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章