قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

   

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 07-07-2012, 09:09 PM المشاركة 33   
افتراضي



العوامل Operators
أنواع العوامل Types of Operators
تتيح البرمجة بلغة السى إستخدام العديد من العوامل operators . يمكننا تصنيف هذه العوامل فى فئات رئيسية هى : العواملالحسابية , عواملالمقارنة , العوامل المنطقية , والعواملالمنطقية الخاصة بالبت المفردة .

1- العوامل الحسابية Arithmetic operators :
تسخدم العوامل الحسابية لإجراء عمليات حسابية معينة بين البيانات, ولها معاملات operands عددية وتعود بنتائج عددية .
بيانات المتغيرات من نوع char تمثل إعداد صحيحة صغيرة لذلك يمكن أن تستخدم كمعاملات operands للعوامل الحسابية operations .
جميع العوامل الحسابية ترتبط (تتزامل) من اليسار لليمين .

تصنف هذه العوامل إلى فئتين :
· عوامل ثنائية المعاملاتBinary Operators .
· عوامل أحادية المعاملات Unary Operators.
العوامل ثنائية المعاملات : المستخدمة فى عمليات "الجمع" و "الطرح " و "الضرب" و "القسمة" و"باقى القسمة " .
والعوامل أحادية المعاملات : المستخدمة فى بيان إشارة "الموجب" أو السالب" وفى عملية التزايد وعملية التناقص .





اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 07-07-2012, 09:12 PM المشاركة 34   
افتراضي


أ‌- العوامل الحسابية الثنائية Binary Arithmetic Operators

1- عوامل عمليات الجمع والطرح: ( + , - )
عوامل عمليات الجمع والطرح سهلة الاستيعاب.
أمثلة :
كود:
c = a + b; d = d + b; c = c - a; a = d - a + c;
  • يمكن استخدام العوامل الحسابية فى معالجة الحروف .
أمثلة :


كود:
 
'A' + 32; /* equals 'a' (ASCII only) */
'G' - 'A' + 'a'; /* equals 'g' (both ASCII and EBCDIC) */
2- عوامل عمليات الضرب والقسمة : * , / ))
عوامل عمليات الضرب والقسمة أيضا سهلة الاستيعاب .
أمثلة :
كود:
c = a * b; d = D * d; c = c / a; A = (A *) / c;

ملحوظة :
  • نتيجة (عائد) قسمة عددان صحيحان هى عدد صحيح ويتم التخلص من باقى القسمة.
أمثلة :



كود:
 
7 / 4; /* equals 1 */ 7 * 3 / 4; /* equals 5 */
كود:

3- عامل عملية إيجاد خارج قسمة الأعداد الصحيحة % :
يستخدم العامل % للحصول على نتيجة (عائد return ) باقى عملية قسمة الأعداد الصحيحة integer .
مثال :
عند قسمة العدد الصحيح 7 على العدد الصحيح 3 باستخدام العامل" /" تكون النتيجة 2 فقط أى
) 7/3 = 2 تسمى هذه العملية بقسمة الأعداد الصحية) . وباقى القسمة يساوى واحد ونحصل علية باستخدام عملية أخرى باستخدام العامل " % " أى 7% 3 = 1 (باقى خارج قسم 7 على 3 يساوى واحد ) .


ملحوظة :
  • عامل باقى القسمة % يعمل فقط مع الأعداد الصحيحة , إشارة النتيجة تساوى إشارة المعامل الأول.
  • أمثلة :
كود:
 
 
 
 
9 % 3; /* equals 0 */ 7 % 3; /* equals 1 */
-7 % 3; /* equals -1 */

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 07-07-2012, 09:14 PM المشاركة 35   
افتراضي


العوامل الحسابية الأحادية Unary Arithmetic Operators

1- عوامل عمليات التزايد والتناقص ( ++ , -- ) :
تستخدم عوامل التزايد والتناقص فى إضافة واحد أو طرح واحد من المتغير .
مثال :
كود:
c = c+1;

فى هذا المثال يتزايد المتغير C بواحد . يمكننا الحصول على نفس النتيجة بعامل التزايد ++ : أى أن

كود:
c ++; // (equals c =c+1 ;) c ++; // increment by 1 the value of the variable c d--; // increment by 1 the value of the variable d

ملاحظة :
العوامل الأحادية للتزايد ++ والتناقص – هى فقط عوامل لغة السى التى يمكن أن تكون "سابقة"
( مثل ++k, --k ) أو "لاحقة" (مثل k++, k-- ) .عندما تكون "سابقة" يمكن تسميتها "تزايد-سابق" و "تناقص-سابق" عندئذ يتم إضافة أو طرح واحد من قيمة المعامل "قبل" التقييم . وعندما تستخدم "كلاحقة" يمكن أن تسمى "تزايد-لاحق" و "تناقص-لاحق" عندئذ يتم جمع أو طرح واحد من قيمة المعامل "بعد" التقييم .
مثال :
كود:
int j = 5;
k = ++j; /*first j = j + 1=6, then k = j=6, which gives us j = 6, k = 6 */ but: int j = 5; k = j++; /*first k = j=5 ,then j = j + 1=6 , which gives us j = 6, k = 5 */

للتوضيح تتبع المثال التالى :


كود:
variable_a = variable_b ++;
لاحظ أن قيمة المتغير variable_b يتم تخصيصها للمتغير variable_a وبمجرد أن يتم ذلك يتزايد المتغيرvariable_b بواحد .
وهذا ينطبق أيضا على عملية التناقص :
كود:
variable_a = variable_b --;

هنا قيمة المتغير variable_b يتم تخصيصها للمتغير variable_a وبمجرد أن يتم ذلك يتناقص المتغير variable_b بواحد .

يجب أخذ الحيطة عند استخدام عوامل التزايد والتناقص فى البرمجة بلغة السى حيث أن :

كود:
variable_a = variable_b ++;

تختلف عن :
كود:
variable_a = ++ variable_b ;

ففى الحالة الأولى يتم تزايد المتغير variable_b "بعد" تخصيصة للمتغير variable_a بينما فى الحالة الثانية يتم تزايد المتغير variable_b "قبل" تخصيصة للمتغير variable_a .
مثال :

كود:
int a, b, c; a = 0; b=a ++;// b=a=0 then a=0+1=1 c = ++ a;//a=a+1=2 then c=a=2


فى هذه الحالة , بعد تنفيذ الثلاثة أوامر فإن قيمة المتغير a"" تكون 2 وقيمة المتغير "b" تكون 0وقيمة المتغير "c" تكون 2 .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 07-07-2012, 09:15 PM المشاركة 36   
افتراضي


عوامل المقارنة Relational Operators :
تستخدم عوامل المقارنة فى "اختبار" عبارات التساوى أو عدم التساوى . إذا تم تقييم عبارة على أنها صواب true , فتكون نتيجتها (عائدها) بواحد وإلا كان عائدها بصفر .
جميع معاملات المقارنة مرتبطة من اليسار لليمين .
تستخدم عوامل المقارنة فى "مقارنة العبارات " , وتستخدم على نطاق واسع فى "مقارنة الشروط التى تتحكم فى مسار تنفيذ البرنامج" , لذلك فإن هذه العوامل غالبا ما تدخل فى بناء عبارات الشرط .






ملحوظة :
  • تم تصميم العوامل الحسابية وعوامل المقارنة بطريق بحيث تسمح بالعبارات المعقدة بدون استخدام أقواس كما فى المثال التالى :
كود:
a + 5 >= c - 1.0 / e /* → (a + 5) >= (c - (1.0 / e)) */
· لا تنسى أن عائد عوامل المقارنة إما صفر أو واحد كما فى الأمثلة التالية :

كود:
 
/* ok: */
5 > 7 /* returns 0 */ 10 <= 20 /* returns 1 */
/* this can be tricky: */ 8 == 13 > 5 /* returns 0, as: 8 == (13 > 5) → 8 == 1 → 0 */ 14 > 5 < 3 /* returns 1, as: (14 > 5) < 3 → 1 < 3 → 1 */ a < b < 5 /* returns 1, as: (a < b) < 5 → (0 or 1) < 5 → 1*/
كود:



الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 07-07-2012, 09:16 PM المشاركة 37   
افتراضي


عوامل العمليات المنطقية أو البولية Boolean or logical operators :
معاملات Operands العمليات المنطقية إما أن تكون واحد true أو صفر false أى غير- الصفر أو صفر . دائما تكون نتيجة (عائد) العوامل المنطقية بواحد أو بصفر . المعاملات فى العبارات المنطقية يجب أن تكون بدن إشارة .
العوامل المنطقية ( AND&& ) و (OR|| ) مرتبطة من اليسار لليمين . عامل النفى المنطقى ! مرتبط من اليمين لليسار .






ملاحظات :
  • العوامل المنطقية أو البولية ذات أهمية كبرى فى إنشاء اختبارات الشرط .
  • أسبقية العوامل المنطقية والعوامل الحسابية وعوامل المقارنة مصممة بطريقة تسمح بعبارات معقدة بدون استخدام الأقواس كما فى الأمثلة التالية :
كود:
 

 
c >= '0' && c <= '9'; /* reads as: (c >= '0') && (c <= '9') */ a + 1 == b || ! f(x); /* reads as: ((a + 1) == b) || (! (f(x))) */ · المنطق AND && يعود بواحد فقط إذا كان تقييم كلا العبارتين بغير الصفر وإلا عاد بصفر . إذا تم تقييم العبارة الأولى بصفر false فإنه لن يتم تقييم العبارة الثانية كما فى المثال التالى : a > b && c < d; /* reads as (a > b) && (c < d) */ /* if (a > b) is false (0), (c < d) will not be evaluated */
· المنطق OR || يعود بواحد إذا كان تقييم أى من العبارتين بغير الصفر وإلا عاد بصفر . إذا تم تقييم العبارة الأولى بصواب true فلن يتم تقييم العبارة الثانية كما فى المثال التالى :

كود:
 
a && b || c && d; /* reads as: (a && b) || (c && d) */
/* if (a && b) is true (1), (c && d) will not be evaluated */
كود:

· القاعدة العامة لقراءة العبارات المنطقية المعقدة هى : إن تقييم المعاملات المنطقية المتتابعة سوف يقف عند اللحظة التى يعرف فيها التقييم النهائى . على سبيل المثال إذا كان لدينا العبارة

a && b && c حيث a=0 , عندئذ فإن المعامل b والمعامل c لن يتم تقييمهما . وهذا مهم للغاية إذا كان اللعبارة b والعبارة c لها تأثير جانبى فإنه لن يتم لذلك يجب أخذ الحيطة عند ترتيب العوامل .
  • عن طريق هذه العوامل يمكننا عمل علاقات نسبية لشروط مختلفة فى نفس الاختبار المنطقى كما يلى
كود:
if (c = 10 && b = 5) c = 5; /* condition test : true: if the variable "c" is" equal to 10)"and "the variable b = 5" then "c" will take the value 5.*/
if (c> 0 || a == 0) b = a; /*condition test : true: if the "variable "c" is greater than 0" or ""a" equal to 0" then ""b" is equal to the variable "a" .*/
if (! a) b = c; /* condition test : true: if "the variable "a" is not equal to 0" then, "the variable "b" takes on the value of the variable "c"".

لاحظ أننا نستخدم عامل النفى "!" NOT , لذلك فإن المتغير "a" يأخذ القيمة true حيث أن قيمته بصفر .



الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 07-07-2012, 09:18 PM المشاركة 38   
افتراضي


عوامل العمليات بين البتات المفردةBit –Bit Operators أو bitwise operators
تستخدم عوامل البتات المفردة فى "تعديل بتات المعاملات العددية بشكل فردى أى كل بت على حدة " .
عوامل البتات المفردة مرتبطة من اليسار لليمين . الاستثناء الوحيد هو عامل البت المفردة الخاص بالنفى أو المكمل complement operator ~ حيث يرتبط من اليمين لليسار .







عوامل البت المفردة &, | , ^ تقوم بتنفيذ العمليات المنطقية على زوج البتات المتناظر فى كل من معاملاتها . العامل ~ يكمل أو يتمم complements كل بت بمعامله فإن كانت البت بواحد يحولها إلى الصفر وأن كانت بصفر يحولها إلى الواحد .
مثال :

كود:
0x1234 & 0x5678 /* equals 0x1230 */
/* because ..
0x1234 : 0001 0010 0011 0100 0x5678 : 0101 0110 0111 1000 ---------------------------- & : 0001 0010 0011 0000
.. that is, 0x1230 */
/* Similarly: */
0x1234 | 0x5678; /* equals 0x567C */ 0x1234 ^ 0x5678; /* equals 0x444C */ ~ 0x1234; /* equals 0xEDCB */


ملحوظة : يمكن أن يستخدم العامل & كمؤشر pointer.
تستخدم عوامل العمليات بين البتات المفردة فى تنفيذ "العمليات المنطقية" بين عناصر أو متغيرات .
أ‌- العامل " و" AND :
يتم تنفيذ العملية المنطقية AND على كل بت على حدة من المعاملات operands (الموجودة كطرفين للعامل) .
نستخدم هذا العامل بكثرة فى عملية إخفاء AND "mask" البايت , من أجل تمكين enable أو عدم تمكين disable " البتات التى نريدها فقط " كما فى المثال التالى :



كود:
int, b; a = 100; b = 28; a = a & b;
تتم عملية AND كما يلى :



كود:
a = 100 ----> 01100100 AND (&) b = 28 ----> 00011100 ___________________ Result = 00000100 // or 4 decimal – only one bit – mask others

ب‌- العامل أو OR Operator (|) :
العامل OR سهل للغاية بالمقارنة بالعامل AND , أيضا عمله ينفذ على كل بت على حدة من بتات المعاملات كما فى المثال التالى :

كود:
int, b; a = 100; b = 28; a = a | b;
تتم عملية OR كما يلى :

كود:
a = 100 ----> 01100100 OR (|) b = 28 ----> 00011100 ___________________ Result = 01111100 // or 124 decimal

ت‌- عامل "أو المنفردة أو الحصرية" XOR operator (^) :
يستخدم العامل XOR على نطاق واسع فى المقارنة بين القيم , لأن فى عملياته المنطقية , سوف تكون النتيجة صواب true (logic 1) فقط "إذا كان أحد وفقط أحد طرفى المقارنة صواب true " كما فى المثال التالى :
كود:
int, b; a = 100; b = 28; a = a ^ b;
تتم عملية XOR كما يلى :


كود:
a = 100 ----> 01100100 XOR (^) b = 28 ----> 00011100 ___________________ Result = 01111000 // or 120 decimal
ث‌- عامل النفى أو المعكوس NOT operator (~) :
يقوم عامل النفى NOT " بعكس حالة كل بت من المعامل الذى يليه كما فى المثال التالى :


كود:
int a, b, c; a = 1; b = 1; b = ~ a ~ c = b
يتم تنفيذ عملية النفى كما يلى

كود:
a = 0B00000001; NOT "a" ----> 0b11111110; b = 0b00000001; NOT "b" ----> 0b11111110;



ج‌- عوامل الإزاحة جهة اليمين وجهة اليسار shift operator << >> :
عوامل الإزاحة << , >> ثنائية المعاملات و"تحرك move بتات "المعامل الأيسر" بعدد من المواضع المحددة "بالمعامل الأيمن" جهة اليسار أو جهة اليمين على الترتيب . المعامل الأيمن يجب أن يكون موجبا .
عند استخدام عامل الإزاحة جهة اليسار (<<) , فإن "أبعد بتات جهة اليسار سوف يتم التخلص منها والبتات الجديدة (التى أصبحت خالية) جهة اليمين يخصص لها أصفار " . نتيجة لذلك فإن "إزاحة معامل جهة اليسار بعدد n موقع" يكافىء "ضرب هذا المعامل فى 2n إذا كانت جميع البتات التى تم التخلص منها بأصفار .
عند استخدام عامل الإزاحة جهة اليمين (>>) , فإن "أبعد بتات جهة اليمين سوف يتم التخلص منها والبتات التى أصبحت خالية جهة اليسار يخصص لها أصفار " . نتيجة لذلك فإن "إزاحة معامل جهة اليمين بعدد n موقع" يكافىء "قسمة هذا المعامل فى 2n إذا كانت جميع البتات التى تم التخلص منها بأصفار .

مثال :
كود:
int a, b, c; a = 10; b = 10; b = a >> 2; c =b<< 5;

فى هذا المثال تم إزاحة قيم بتات المتغير "a" لموقعين جهة اليمين بينما تم إزاحة بتات المتغير " b " لخمس مواقع جهة اليسار .

تتم عملية الإزاحة كما يلى :
كود:
variable // ----> 00001010 - value 10 in binary >> // ----> 00000101 - value 5 in binary




مقارنة بين عوامل البتات المفردة والعوامل المنطقية Bitwise vs. Logical :

يجب أن تكون على علم تام بالأختلاف الأساسى بين عمل كل من عوامل البتات المفردة والعوامل المنطقية .

مثال :


كود:
 
 
0222222 & 0555555; /* equals 000000 -bitwise AND >>> 5=101 & 2 =010 =0*/
0222222 && 0555555; /* equals 1- Logical AND && returns 1 only if both expressions evaluate to be nonzero*/
~ 0x1234; /* equals 0xEDCB >>> 0xE=~0x1,0xD=~0x2 … bitwise complement (unary); inverts each bit */
! 0x1234; /* equals 0 >>> logical negation, negation of non-zero is zero-Logical operators always return 1 or 0 */


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 07-07-2012, 09:19 PM المشاركة 39   
افتراضي


عوامل العمليات بين البتات المفردةBit –Bit Operators أو bitwise operators
تستخدم عوامل البتات المفردة فى "تعديل بتات المعاملات العددية بشكل فردى أى كل بت على حدة " .
عوامل البتات المفردة مرتبطة من اليسار لليمين . الاستثناء الوحيد هو عامل البت المفردة الخاص بالنفى أو المكمل complement operator ~ حيث يرتبط من اليمين لليسار .







عوامل البت المفردة &, | , ^ تقوم بتنفيذ العمليات المنطقية على زوج البتات المتناظر فى كل من معاملاتها . العامل ~ يكمل أو يتمم complements كل بت بمعامله فإن كانت البت بواحد يحولها إلى الصفر وأن كانت بصفر يحولها إلى الواحد .
مثال :

كود:
0x1234 & 0x5678 /* equals 0x1230 */
/* because ..
0x1234 : 0001 0010 0011 0100 0x5678 : 0101 0110 0111 1000 ---------------------------- & : 0001 0010 0011 0000
.. that is, 0x1230 */
/* Similarly: */
0x1234 | 0x5678; /* equals 0x567C */ 0x1234 ^ 0x5678; /* equals 0x444C */ ~ 0x1234; /* equals 0xEDCB */


ملحوظة : يمكن أن يستخدم العامل & كمؤشر pointer.
تستخدم عوامل العمليات بين البتات المفردة فى تنفيذ "العمليات المنطقية" بين عناصر أو متغيرات .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 07-07-2012, 09:20 PM المشاركة 40   
افتراضي


العامل " و" AND :
يتم تنفيذ العملية المنطقية AND على كل بت على حدة من المعاملات operands (الموجودة كطرفين للعامل) .
نستخدم هذا العامل بكثرة فى عملية إخفاء AND "mask" البايت , من أجل تمكين enable أو عدم تمكين disable " البتات التى نريدها فقط " كما فى المثال التالى :



كود:
int, b; a = 100; b = 28; a = a & b;
تتم عملية AND كما يلى :



كود:
a = 100 ----> 01100100 AND (&) b = 28 ----> 00011100 ___________________ Result = 00000100 // or 4 decimal – only one bit – mask others

ب‌- العامل أو OR Operator (|) :
العامل OR سهل للغاية بالمقارنة بالعامل AND , أيضا عمله ينفذ على كل بت على حدة من بتات المعاملات كما فى المثال التالى :

كود:
int, b; a = 100; b = 28; a = a | b;
تتم عملية OR كما يلى :

كود:
a = 100 ----> 01100100 OR (|) b = 28 ----> 00011100 ___________________ Result = 01111100 // or 124 decimal

ت‌- عامل "أو المنفردة أو الحصرية" XOR operator (^) :
يستخدم العامل XOR على نطاق واسع فى المقارنة بين القيم , لأن فى عملياته المنطقية , سوف تكون النتيجة صواب true (logic 1) فقط "إذا كان أحد وفقط أحد طرفى المقارنة صواب true " كما فى المثال التالى :
كود:
int, b; a = 100; b = 28; a = a ^ b;
تتم عملية XOR كما يلى :


كود:
a = 100 ----> 01100100 XOR (^) b = 28 ----> 00011100 ___________________ Result = 01111000 // or 120 decimal
ث‌- عامل النفى أو المعكوس NOT operator (~) :
يقوم عامل النفى NOT " بعكس حالة كل بت من المعامل الذى يليه كما فى المثال التالى :


كود:
int a, b, c; a = 1; b = 1; b = ~ a ~ c = b
يتم تنفيذ عملية النفى كما يلى

كود:
a = 0B00000001; NOT "a" ----> 0b11111110; b = 0b00000001; NOT "b" ----> 0b11111110;



ج‌- عوامل الإزاحة جهة اليمين وجهة اليسار shift operator << >> :
عوامل الإزاحة << , >> ثنائية المعاملات و"تحرك move بتات "المعامل الأيسر" بعدد من المواضع المحددة "بالمعامل الأيمن" جهة اليسار أو جهة اليمين على الترتيب . المعامل الأيمن يجب أن يكون موجبا .
عند استخدام عامل الإزاحة جهة اليسار (<<) , فإن "أبعد بتات جهة اليسار سوف يتم التخلص منها والبتات الجديدة (التى أصبحت خالية) جهة اليمين يخصص لها أصفار " . نتيجة لذلك فإن "إزاحة معامل جهة اليسار بعدد n موقع" يكافىء "ضرب هذا المعامل فى 2n إذا كانت جميع البتات التى تم التخلص منها بأصفار .
عند استخدام عامل الإزاحة جهة اليمين (>>) , فإن "أبعد بتات جهة اليمين سوف يتم التخلص منها والبتات التى أصبحت خالية جهة اليسار يخصص لها أصفار " . نتيجة لذلك فإن "إزاحة معامل جهة اليمين بعدد n موقع" يكافىء "قسمة هذا المعامل فى 2n إذا كانت جميع البتات التى تم التخلص منها بأصفار .

مثال :
كود:
int a, b, c; a = 10; b = 10; b = a >> 2; c =b<< 5;

فى هذا المثال تم إزاحة قيم بتات المتغير "a" لموقعين جهة اليمين بينما تم إزاحة بتات المتغير " b " لخمس مواقع جهة اليسار .

تتم عملية الإزاحة كما يلى :
كود:
variable // ----> 00001010 - value 10 in binary >> // ----> 00000101 - value 5 in binary




مقارنة بين عوامل البتات المفردة والعوامل المنطقية Bitwise vs. Logical :

يجب أن تكون على علم تام بالأختلاف الأساسى بين عمل كل من عوامل البتات المفردة والعوامل المنطقية .

مثال :


كود:
 
 
0222222 & 0555555; /* equals 000000 -bitwise AND >>> 5=101 & 2 =010 =0*/
0222222 && 0555555; /* equals 1- Logical AND && returns 1 only if both expressions evaluate to be nonzero*/
~ 0x1234; /* equals 0xEDCB >>> 0xE=~0x1,0xD=~0x2 … bitwise complement (unary); inverts each bit */
! 0x1234; /* equals 0 >>> logical negation, negation of non-zero is zero-Logical operators always return 1 or 0 */



الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 06:00 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)