


السمعة:
السلام عليكم
بسم الله والصلاة والسلام على رسول الله وعلى آله وصحبه ومن والاه
من هذا المقال سنتعامل مع لغة C بالأمور الlow level
قبل البداية في هذه السلسلة يجب ان تكون على معرفة باساسيات لغة C يمكنك الاتطلاع على اساسيات لغة C الي نشرتها بالشبكة ،على بركة الله
في هذا المقال سنشرح ال ternary operator وال bitwise operators وال increment and decrement
وصراحة انا لم اشرح الoperators العامة التي نتعامل معها في الرياضيات كالجمع والطرح والقسمة والضرب لانها امور بديهية وسهل التعامل معها فـ هي السلسلة فيها امور اقوى من الامور الاساسية الي بتشوف اي مبرمج بيعرفها وان شاء الله تكون هذه السلسلة تمكين للاساسيات الي حكينا عليها بأول سلسلة رح نركز عالامثلة العملية
شو هي عوامل البت وليش منتعلما ؟
هي عوامل منستخدما للتلاعب بالبتات الفردية بالأرقام، وهي مفيدة بالبرمجة منخفضة المستوى لتعاملها مع الباينري (0 و1)
متل أنظمة التحكم
رح نشرح بالتفصيل شو هي عوامل البت الستة:
1.AND Operator( & ):
هاد العامل شبيه لعملية الضرب بالجبر الرياضي.
مثال نظري:
نختار الرقمين 3، 5:
5: 0101 بالنظام الثنائي
3: 0011
3&5 = 0001 بصير يساوي 1 بالنظام العشري
مثال:
2.OR Operator ( | ):
إذا كانت وحدة من القيمتين واحد ف بتكون القيمة = 1.
مثال نظري:
5 | 3 = 0111 يعني يساوي ال7 بالعشري.
مثال برمجي:
3.XOR Operator( ^ ):
بس كانوا البتين مختلفين بتكون القيمة = 1.
مثال نظري:
5 ^ 3 = 0110 (يعني بيساوي 6 بالعشري).
مثال برمجي:
4. NOT Operator ( ~ ):
بيقلب حميع البتات للرقم
مثال نظري:
- 5 : 000001010
- ~5 : 111110101
بال tow's complement بيساوي ال -6. الي ما بيعرف شو هو ال tow's complement رح ارفق ملف فيه الnumber systems.
مثال برمجي:
5. Left Shift( >> ):
بينقل البتات الى اليسار حسب كم خطوة نحنا منكون محددينلو والبتات الي بتضل فارغة بيملأها ب0.
مثال نظري:
1 >> 5: الخمسة بالثنائي 0101
بتصير 1010 بالعشري بتصير بتساوي ال 10
2 >> 5: 0101
بتصير 10100 بالعشري بتساوي ال20.
مثال برمجي:
6. Right Shift ( << ):
متل الleft بس هون بينقل البتات الى اليمين.
مثال نظري:
1 << 10: العشرة بالباينري 1010
بتصير 0101 بالعشري بتساوي ال5.
2 << 10: 1010
بتصير 0010 بالعشري بتساوي ال2
مثال برمجي:
مثال شامل عن عوامل التعيين البتية:
رح ارفق ملف كمان لل logic gates مشان يكون الفهم اعمق طبعا مهم جدا انك تفهمن بالdigital system
هلأ رح نحكي عن الInermenet and Decrement Operators:
عوامل الزيادة والنقصان:
هي عوامل احادية (unary operators) تستخدم لزيادة او تقليل قيمة المتغير بمقدار 1 ولها نوعين:
1. Perfix( ++x, --x):
قيم زيادة قيمة المتغير أول الشي وبعدين بتستخدم القيمة الجديدة بالتعبير الي عم نشتغل عليه.
2. Postfix( x++, x--):
قيم الاستخدام الاصلية وبعدين منزيد على قيمة المتغير.
وعوامل النقصان نفس الشي; طبعا هي عادة بتستخدم مع الاعداد الصحيحة بس كمان فينا نستخدما مع المؤشرات والfloating points.
مثال:
خلينا ناخد مثال عالمؤشرات:
طيب سبق و حكينا عن الternary operator بس ما توسعنا فيه.
العامل الثلاثي (ternary operator) ( ?: ):
هو العامل الوحيد الشرطي في لغة C وحكينا عنو من قبل ومنستخدمو كبديل ل if, else
syntax:
اذا كان الcondition صحيح بياخد الexp1
واذا كان غلط بياخد الexp2
مثال:
صراحة بشوف هاد الموضوع جدا ضروري تعلمه وان شاء الله الامور الجاي بتكون الموضوعات اهم.
بسم الله والصلاة والسلام على رسول الله وعلى آله وصحبه ومن والاه
من هذا المقال سنتعامل مع لغة C بالأمور الlow level
قبل البداية في هذه السلسلة يجب ان تكون على معرفة باساسيات لغة C يمكنك الاتطلاع على اساسيات لغة C الي نشرتها بالشبكة ،على بركة الله
في هذا المقال سنشرح ال ternary operator وال bitwise operators وال increment and decrement
وصراحة انا لم اشرح الoperators العامة التي نتعامل معها في الرياضيات كالجمع والطرح والقسمة والضرب لانها امور بديهية وسهل التعامل معها فـ هي السلسلة فيها امور اقوى من الامور الاساسية الي بتشوف اي مبرمج بيعرفها وان شاء الله تكون هذه السلسلة تمكين للاساسيات الي حكينا عليها بأول سلسلة رح نركز عالامثلة العملية
شو هي عوامل البت وليش منتعلما ؟
هي عوامل منستخدما للتلاعب بالبتات الفردية بالأرقام، وهي مفيدة بالبرمجة منخفضة المستوى لتعاملها مع الباينري (0 و1)
متل أنظمة التحكم
رح نشرح بالتفصيل شو هي عوامل البت الستة:
1.AND Operator( & ):
هاد العامل شبيه لعملية الضرب بالجبر الرياضي.
مثال نظري:
نختار الرقمين 3، 5:
5: 0101 بالنظام الثنائي
3: 0011
3&5 = 0001 بصير يساوي 1 بالنظام العشري
مثال:
C:
#include <stdio.h>
int main(){
int a = 5; // 0101
int b = 3; // 0011
int result = a & b; // 0001
printf("5 & 3 = &d\n", result); // النتيجة = 1
return 0;
}
2.OR Operator ( | ):
إذا كانت وحدة من القيمتين واحد ف بتكون القيمة = 1.
مثال نظري:
5 | 3 = 0111 يعني يساوي ال7 بالعشري.
مثال برمجي:
C:
#include <stdio.h>
int main(){
int a = 3; //0011
int b = 5; //0101
int result = a | b; //0111
printf("3 | 5 = %d\n", result); // النتيجة 7
return 0;
}
3.XOR Operator( ^ ):
بس كانوا البتين مختلفين بتكون القيمة = 1.
مثال نظري:
5 ^ 3 = 0110 (يعني بيساوي 6 بالعشري).
مثال برمجي:
C:
#include <stdio.h>
int main() {
int a = 5; // 0101
int b = 3; // 0011
int result = a ^ b;
printf("5 ^ 3 = %d\n", result);
return 0;
}
4. NOT Operator ( ~ ):
بيقلب حميع البتات للرقم
مثال نظري:
- 5 : 000001010
- ~5 : 111110101
بال tow's complement بيساوي ال -6. الي ما بيعرف شو هو ال tow's complement رح ارفق ملف فيه الnumber systems.
مثال برمجي:
C:
#include <stdio.h>
int main(){
int a = 5;
int result = ~a;
printf("~5 = %d\n", result);
return 0;
}
5. Left Shift( >> ):
بينقل البتات الى اليسار حسب كم خطوة نحنا منكون محددينلو والبتات الي بتضل فارغة بيملأها ب0.
مثال نظري:
1 >> 5: الخمسة بالثنائي 0101
بتصير 1010 بالعشري بتصير بتساوي ال 10
2 >> 5: 0101
بتصير 10100 بالعشري بتساوي ال20.
مثال برمجي:
C:
#include <stdio.h>
int main(){
int a = 5;
int result1 = a << 1;
int result2 = a << 2;
printf("a << 1 = %d\n", result1);
printf("a << 2 = %d\n", result2);
return 0;
}
6. Right Shift ( << ):
متل الleft بس هون بينقل البتات الى اليمين.
مثال نظري:
1 << 10: العشرة بالباينري 1010
بتصير 0101 بالعشري بتساوي ال5.
2 << 10: 1010
بتصير 0010 بالعشري بتساوي ال2
مثال برمجي:
C:
#include <stdio.h>
int main(){
int a = 10;
int result1 = a >> 1;
int result2 = a >> 2;
printf("10 >> 1 = %d\n", result1);
printf("10 >> 2 = %d\n", result2);
return 0;
}
مثال شامل عن عوامل التعيين البتية:
C:
int a = 5; // 0101
a &= 3; // a = a & 3 => 0101 & 0011 = 0001
printf("%d\n", a); // النتيجة: 1
a = 5;
a |= 3; // a = a | 3 => 0101 | 0011 = 0111
printf("%d\n", a); // النتيجة: 7
a = 5;
a ^= 3; // a = a ^ 3 => 0101 ^ 0011 = 0110
printf("%d\n", a); // النتيجة: 6
a = 5;
a <<= 1; // a = a << 1 => 0101 << 1 = 1010
printf("%d\n", a); // النتيجة: 10
a = 10;
a >>= 1; // a = a >> 1 => 1010 >> 1 = 0101
printf("%d\n", a); // النتيجة: 5
رح ارفق ملف كمان لل logic gates مشان يكون الفهم اعمق طبعا مهم جدا انك تفهمن بالdigital system
هلأ رح نحكي عن الInermenet and Decrement Operators:
عوامل الزيادة والنقصان:
هي عوامل احادية (unary operators) تستخدم لزيادة او تقليل قيمة المتغير بمقدار 1 ولها نوعين:
1. Perfix( ++x, --x):
قيم زيادة قيمة المتغير أول الشي وبعدين بتستخدم القيمة الجديدة بالتعبير الي عم نشتغل عليه.
2. Postfix( x++, x--):
قيم الاستخدام الاصلية وبعدين منزيد على قيمة المتغير.
وعوامل النقصان نفس الشي; طبعا هي عادة بتستخدم مع الاعداد الصحيحة بس كمان فينا نستخدما مع المؤشرات والfloating points.
مثال:
C:
int x = 5;
printf("%d\n", ++x); // النتيجة: 6 (زيادة أولاً، ثم طباعة)
x = 5;
printf("%d\n", x++); // النتيجة: 5 (طباعة أولاً، ثم زيادة)
printf("%d\n", x); // النتيجة: 6 (بعد الزيادة)
خلينا ناخد مثال عالمؤشرات:
C:
int arr[] = {1, 2, 3, 4};
int *p = arr;
printf("%d\n", *p++); // طباعة 1 ثم تحريك المؤشر الى العنصر التالي
printf("%d\n", *p); // طباعة العنصر التاني = 2
طيب سبق و حكينا عن الternary operator بس ما توسعنا فيه.
العامل الثلاثي (ternary operator) ( ?: ):
هو العامل الوحيد الشرطي في لغة C وحكينا عنو من قبل ومنستخدمو كبديل ل if, else
syntax:
كود:
Condition ? exp1 : exp2
اذا كان الcondition صحيح بياخد الexp1
واذا كان غلط بياخد الexp2
مثال:
C:
#include <stdio.h>
int main(){
int x = 10, y = 5;
int max = (x > y) ? x : y;
printf("the bigger: %\n", max);
return 0;
}
صراحة بشوف هاد الموضوع جدا ضروري تعلمه وان شاء الله الامور الجاي بتكون الموضوعات اهم.
المرفقات
التعديل الأخير: