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

أدوات الموضوع

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:332
قديم 01-12-2012, 08:55 PM المشاركة 1   
افتراضي التعامل مع "البت المفردة " Bitwise مقابل التعامل مع "التعبير المنطقى" Logical Express Twitter FaceBook Google+



التعامل مع "البت المفردة " Bitwise مقابل التعامل مع "التعبير المنطقى" Logical Expression :

فى البرمجة , العمليات المنطقية logic operations AND, OR,NOT يمكن أن تتخذ شكلين :
  • البت المفردة Bitwise .
  • والتعبير منطقى Logical Expression .
على الرغم من أنهما يشتركان فى القيام بالعمليات المنطقية وفى واقع الأمر بنفس مفهوم الأساس المنطقى , إلا أنهما فى الواقع مختلفان تماما فى الوظيفة .
عودة إلى البوابات المنطقية :
العمليات المنطقية Logical operationsتجرى على عنصرين والنتيجة تعتمد على صواب (صحة) المنطق.على سبيل المثال :
إذا كان A صوابtrue و B غير صواب false عندئذ يكون : A OR B صواب و
A AND B غير صواب و NOT A غير صواب و NOT B صواب .


عمليات البت المفردة Bitwise operations :
  • تستخدم الأعداد الثنائية .
  • كل خانة من العدد يمكن أن تكون فى الحالة صواب true أو فى الحالة غير صواب false . على سبيل المثال : 12 AND 5 تساوى 4 لأن 12 تساوى 1100 و 5 تساوى 0101 و 1 AND 0 يساوى 0 و 1 AND 1 يساوى 1 و 0 AND 0 يساوى 0 و 0 AND 1 يساوى 0 . وهذا يتركنا مع النتيجة 0100 وهى 4 .
  • فى لغة السى يتم تحديد عمليات البت المفردة Bitwise operations باستخدام "تعبير مفرد" بالرموز المفردة : ""& لعملية AND و الرمز "|" لعملية OR و "~" لعملية NOT (أى أن العملية تتم بين بت وبت ) . على سبيل المثال : "e = 12 & 5" تكون النتيجة e = 4 , لأنه يتم التنفيذ طبقا لعملية bitwise AND ( بالطبع بعد تحويل الأعداد العشرية إلى ثنائية).
من الناحية الأخرى :
العمليات المنطقية للتعبير المنطقى Logical Expression:
يتم تحديدها باسخدام : الرمز "&&" لعملية AND والرمز ""|| لعملية OR و الرمز !"" لعملية NOT . على سبيل المثال : "variable1 && variable2" عملية منطقية لتعبير منطقى بين متغيرين ,وتكون نتيجتها صواب true إذا كان كلا المتغيريين صواب وإلا كانت النتيجة غير صواب .
ملاحظة جانبية :

هذا هو نفس الإسلوب المتبع مع علامة "التساوى" .
  • علامة التساوى المفردة (=) هى بالفعل أمر لتحديد (تخصيص) مساواة المتغير بشىء ما equals . على سبيل المثال "a = 5" تجعل a تساوى 5 . من ناحية أخرى :
  • علامة التساوى المزدوجة (==) تستخدم من أجل المقارنة comparison . على سبيل المثال :
"a == 5" هى "عبارة شرط" conditional statement والتى تتحقق مما إذا كان a تساوى 5

((if a equals 5.
  • الرمز !=" " يستخدم لمقارنة عدم التساوى
يجب أن تكون على بينة من الفرق الأساسى بين طريقة عمل كل من المعاملات المنطقية الفردية الخاصة بالتعامل مع البت bitwise والمعاملات المنطقية الخاصة بالتعامل مع العبارات . على سبيل المثال:

كود:
0222222 & 0555555 /* Bitwise >> equals 000000 */
تجرى عملية AND بين كل بتين متناظرين والنتيجة إما بواحد أو بصفر فى الخانة المقابلة .

كود:
0222222 && 0555555 /* Expression >> equals 1 */
تجرى عملية AND بين العدد الأيسر ككل ( وهو غير صفرى) والعدد الأيمن ككل ( وهوأيضا غير صفرى) وتكون النتيجة فقط إما بواحد ( كحالتنا) أو بصفر .

كود:
~ 0x1234 /* Bitwise >> equals 0xEDCB */
تجرى عملية NOT بين كل بتين متناظرين والنتيجة إما بواحد أو بصفر فى الخانة المقابلة .

كود:
! 0x1234 /* Expression >> equals 0 */
تجرى عملية NOT على العدد ككل والنتيجة فقط إما بواحد أو بصفر ( كما هو الحال فى حالتنا ) .

مثال :
كود:
0x1234 & 0x5678 /* equals 0x1230 */ /* because .. 0x1234 : 0001 0010 0011 0100 0x5678 : 0101 0110 0111 1000 ---------------------------- & : 0001 0010 0011 0000 .. that is, 0x1230 */
مثال :

كود:
a > b && c < d; /* reads as (a > b) && (c < d) */ /* if (a > b) is false (0), (c < d) will not be evaluated */

اعلانات

banna1980
:: مهندس متميز ::
تاريخ التسجيل: Apr 2010
الدولة: مصر - السويس
المشاركات: 409
نشاط [ banna1980 ]
قوة السمعة:0
قديم 03-12-2012, 04:33 AM المشاركة 2   
افتراضي


جزاك الله خيرا

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

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


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

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025