tgoop.com/Beprogramming/1388
Last Update:
👈 خامساً : روابط تتعامل مع البت
سنتطرق الى موضوع مهم في البرمجة وهو الضرب المنطقي والجمع المنطقي وكذالك الازاحة
ازاحة لليمين او لليسار
وكيف بيتم كل واحد منما ذكرنا
البعض لا يفرق بين & هذا الرمز وهذا && الرمز وخصوصاً نحن كمبتدئين في البرمجة
الضرب المنطقي هو رمزه & والفارق بينه وبين && فهذ الرمزين تستخدم للمقارنة بين اي شيئ في اي نظام عشري او ثماني او غير ذالك اما الضرب المنطقي فهو يعمل على مقارنة بين البتات اي يقوم بتحويل العدد الى ثنائي ويقوم بالمقارنة ونحصل على ناتج من ذالك
فأذا كان مثلا 7&6
فسيكون الناتج 6 كيف؟
اولا قمنا بتحويل العدد 6الى النظام الثنائي وكذالك العدد 7
ونقابل البت بالبت عندما يكون احد البتات المتقابلة 0 نضع 0 واذا كان جميع البتات 1 نضع1
فالرقم 6 =110 والرقم 7 = 111
فعندما نقابل العددين فالناتج سيكون 110 وهو قيمة الرقم 6 بالنظام العشري
الجمع المنطقي هو يقوم ايضا بالمقارنة بين البتات مثل الضرب المنطقي والازاحة ولاكن يعمل كدالة او ورمزه | والفارق بينه وبين الرمز || فهذا الاخير يقوم بالمقارنة بين اي شيئ في اي نضام ويمثل دالة او Or اما الجمع المنطقي | فيقوم بتحويل العدد من اي نظام الى النظام الثنائي ويقارن بين البتات اذا كان احد البتات 1 فنضع 1 في الناتج واذا كان جميع البتات ٠ نضع ٠
مثلا 7 |6 فالناتج سيكون 7
حولنا 6 الى النظام الثنائي وكذالك العدد 7
وقمنا بالمقارنة وبيصير الناتج 111 وهو يمثل قيمة الرقم 7 بالنظام العشري
عملية and....
6 = 0110
7 = 0111 &
----------------
0110 = 6
عملية or....
6 = 0110
7 = 0111 |
----------------
0111 = 7
عملية النفي
نفي ال 111ْع يكون 0
👈الان نتكلم عن الازاحة الى اليمين والى اليسار
اولا ماهو رمز الازاحة؟
رمز الازاحة هذا الرمز >> وهو الذي نستعمله في دوال الاخراج(الطباعة) والادخال ولاكن نعكس اتجاه الرمز في الادخال
فأي من الرمز ازاحة لليمين واي رمز إزاحة لليسار؟
.....
👈 عامل التزحيف لليسار >> والصيغة القواعدية لها هي
value<<constant integer
عامل التزحيف لليسار هو عامل احادي اي يعمل على قيمة واحد تكون على يسار العامل ويجب ان يكون العدد صحيح ثابت وعندما يقوم المترجم بتنفيذ هذه العملية سيدفع البتات الى اليسار بعدد محدد العدد الذي سيكون يمين العامل
البتات الذي على اليسار سوف تختفي عند تزحيف العدد لليسار
والبتات بتكون بعدد الرقم الذي على يمين العامل
الفراغ الذي سيتولد في اليمين نتيجة تزحيف العدد فأنه سيملأ بأصفار
مثلا
const int n=42;
n<<2
هنا سيكون الناتج
168
اولا حولنا العدد 42 الى النظام الثنائي
00101010
وعند التزحيف بيكون
10101000
وهي قيمة العدد 168 بالنظام الثنائي
👈 تزحيف البتات الى اليمين <<
التزحيف لليمين هو مشابه الى حد كبير التزحيف لليسار
ولاكن التزحيف لليمين ينتج عدد اقل
عندما نقوم بالتزحيف لليمين يختفي البتات من اليمين بمقدار العدد الثابت الصحيح الذي يمين العامل
ويملأ الفراغات الذي في اليسار الناتجة من تزحيف البتات ب اصفار
مثلاً 2<<88
فسينتج 22 كيف؟
اولا قمنا بتحويل العدد 88 الى مايساويه بالنظام الثنائي وثم تزحيف العدد الثنائي بمقدار 2 بت الى اليمين
ثم ملأ الفراغات الناتجة من التزحيف في اليسار بأصفار
واخيرا تحويل الرقم الناتج من النظام الثنائي الى النظام العشري
👈مقارنة البتات بأستخدام العامل xor
عندما يتم المقارنة بين بتات بأستخدام هذا العامل فأن اي بتات مختلفين نضع الناتج 1 واي بتات متساويين نضع الناتج ٠
مثلا 7^5
اولا نحول 7 و5 الى النظام الثنائي ثم نعمل المقارنة بين الرقمين الثنائيين
7= 111
5=101
الناتج بيكون
10 بالنظام الثنائي
وعندما نحوله الى النظام العشري
يساوي 2
🖋 م . أحمد قطران
يتبع ....👇👇
BY مستـ1ــوى حاسوب
Share with your friend now:
tgoop.com/Beprogramming/1388