關係及邏輯運算子
日常生活中,我們經常會遇到需要分辨真話與謊話。分辨真話與謊話有一些方法,研究學習分辨真假的方法的學問,就叫邏輯學logic。而需要被研究判斷的話,在邏輯學上的專有名詞叫做命題statement ,至於真話假話或真話謊話有多種說法,在邏輯學上會統一為真與假true or false。
條件跳躍的指令,會依據某一段關於資料特性或關係的命題,或稱條件,的真與假,來決定是否以及如何執行後續的動作。
由於條件跳躍依據資料的邏輯關係來決定跳往目標,在討論條件跳躍之前,我們必需先了解決定條件真假的運算元關係以及邏輯運算子。
運算元關係及運算的核心觀念在於真與假true or false,換句話說是運算元之間關係條件的存在或不存在。
在C語言中。一般數位邏輯運算中,我們以1代表真,而0代表假。以下是關係存在邏輯以及邏輯運算子一欄表:
關係存在邏輯以及邏輯運算子表
只要語法之中有and(及),or(或) 以及 not (非)等邏輯運算子, 就已經足夠合成各種其他不同的邏輯運算子,例如說XOR Exclusive OR,去除兩個運算元全都為真(全真)的OR邏輯。只有在兩個運算元之中有一個而且只有一個為真時才為真。
char xor(char a,char b)
{
return((a||b)&& !(a && b)); //(a或則b) 並且 (不是(a而且b))
}
以下範例程式讓程式使用者得以輸入運算元,對運算元執行AND,OR,XOR運算之後再輸出。
只要語法之中有and(及),or(或) 以及 not (非)等邏輯運算子, 就已經足夠合成各種其他不同的邏輯運算子,例如說XOR Exclusive OR,去除兩個運算元全都為真(全真)的OR邏輯。只有在兩個運算元之中有一個而且只有一個為真時才為真。
char xor(char a,char b)
{
return((a||b)&& !(a && b)); //(a或則b) 並且 (不是(a而且b))
}
以下範例程式讓程式使用者得以輸入運算元,對運算元執行AND,OR,XOR運算之後再輸出。
範例:
#include "c4mlib.h" //引入ASA Seriesc函式庫
#include "math.h" //引入math,h函式庫
#include "stdlib.h" //引入stdlib函式庫
int xor(int p,int q); //在記憶體中先開一個區塊給此函式使用
int main(void)
{
C4M_DEVICE_set(); //執行ASAM128板初始設定
int p,q;
printf("enter P (0 or 1):\n");
scanf("%d",&p);
printf("enter Q (0 or 1):\n");
scanf("%d",&q);
printf("P AND Q: %d\n", p && q );
printf("P OR Q: %d\n", p || q );
printf("P XOR Q: %d\n", xor(p,q));
return 0;
}
int xor(int p,int q)
{
return((p||q) && !(p&&q));
}
顯示結果:
輸入0按enter
>> enter P (0 or 1):
<< 0
>> 0
輸入1按enter
>> enter P (0 or 1):
<< 0
>> 0
>> enter Q (0 or 1):
<< 1
最終顯示結果
>> enter P (0 or 1):
<< 0
>> 0
>> enter Q (0 or 1):
<< 1
>> 1
>> P AND Q: 0