العوامل المنطقية Logical operators بين البتات المفردة Bitwise:
تتيح لك العوامل المنطقية تنفيذ إجراءات أو عمليات التى تخضع للمنطق الرقمى digital logic الذى شيده عالم الرياضيات الانجليزى "جورج بول" George Boole فى القرن التاسع عشر . هذه العمليات البولية (المنطقية) هى AND, NOT, XOR, NOR, NAND, XNOR وهى تدرس بتوسع فى منهج الأنظمة الرقمية المركبة combinational والتتابعية sequential .
يتم تنفيذ العمليات المنطقية فى لغة السى بين متغيرين أو ثابتين , فأنت تقوم بالتعامل مع بت مفردة bitwise , عند نفس الوزن weight بالمتغير أو بالعدد . لمعرفة وفهم الأمثلة تذكر أولا جداول الحقيقة للعمليات المنطقية والموضحة أدناه :
يتم تركيب العمليات المنطقية فى لغة السى بالأحرف الخاصة التى تدل على كل واحدة منها , فيما يلى سرد لتطبيقات العوامل المنطقية :- العامل المنطقى NOT (النفى) ويرمز له بالحرف (~) .
unsigned short VALUE1 = 0b01010000; // Variable initialized to binary number 80.
unsigned short RESULT;
RESULT = ~ VALUE1; // the RESULT variable stores the complement VALUE1, 175.
- العامل المنطقى OR (أو الشامل inclusive) ويرمز له بالحرف (|) :
unsigned short VALUE1 = 0b01010000; // Variable initialized to binary number 80.
unsigned short VALUE2 = 0b01011111; // Variable initialized to binary number 95.
unsigned short RESULT;
RESULT = VALUE1 | VALUE2; // The value of the logical or is stored in RESULT, 95.
- العامل المنطقى XOR (أو الحصرى exclusive ) ويرمز له بالحرف (^) :
unsigned short VALUE1 = 0b01010000; // Variable initialized to binary number 80.
unsigned short VALUE2 = 0b01011111; // Variable initialized to binary number 95.
unsigned short RESULT;
RESULT = VALUE1 ^ VALUE2;// The value of the logical XOR is stored in RESULT, 15.
- العامل المنطقى AND ويرمز له بالحرف (&) :
unsigned short VALUE1 = 0b01010000; // Variable initialized to binary number 80.
unsigned short VALUE2 = 0b01011111; // Variable initialized to binary number 95.
unsigned short RESULT;
RESULT = VALUE1 & VALUE2; // The value of the logical AND is stored in RESULT, 80.
تنفيذ العمليات المنطقية NAND, NOR, XNOR يشبه العمليات المنطقية AND, OR, XOR مع إضافة حرف النفى (~), كما فى الأمثلة التالية :
unsigned short VALUE1 = 0b01010000; // Variable initialized to binary number 80.
unsigned short VALUE2 = 0b01011111; // Variable initialized to binary number 95.
unsigned short RESULT;
RESULT = ~ (VALUE1 | VALUE2); // The value of the logical NOR, is stored in RESULT.
RESULT = ~ (VALUE1 & VALUE2); // The value of the logical, NAND Is stored in RESULT.
RESULT = ~ (VALUE1 ^ VALUE2); // The value of the logical XNOR, stored in RESULT.
- إزاحة البت داخل المتغير مفيد للعمليات والمهام التى تنطوى على المناورة بالبيانات على مستوى البت . الإزاحة جهة اليمين لقيمة المتغير إو الثابت بلغة السى تتم من خلال الحروف (>>) , كما أن الإزاحة جهة اليسار تتم من خلال الحروف (< <) . معامل الإزاحة يسبب فقدان بقيم البتات التى تخرج ويدخل بدلا منها أصفار . الأمثلة التالية توضح طريقة التعامل مع هذه المعاملات:
short DATA = 0xFF; // Declaration of variables.
short RESULT;
RESULT = DATA >> 4; // This saves the result in the variable shift 4 bits
// to the right of the variable DATA final result value is 0x0F.
RESULT = DATA << 4; // operation is stored in the variable result the shift of 4 bits
// to the left of the variable DATA final result value is 0xF0.
الجداول التالية تلخص العوامل الحسابية والمنطقية كما سبق توضيحها :
4- الدوال فى لغة السى Functions in C