مقدمة في JavaScript: استكمال للدرس الاول Bitwise Operators
بسم الله الرحمن الرحيم
اللَّهُمَّ انْفَعْنَا بِمَا عَلَّمْتَنَا , وَعَلِّمْنَا مَا يَنْفَعُنَا , وَزِدْنَا عِلْمًا إِلَى عِلْمِنَا
مقدمة:
استكمالًا لسلسلة دروس (مقدمة في JavaScript -سنرمز لها لاحقأ بالاختصار JS-) سوف نتعلم اليوم النوع الأخير من العمليات في لغة JS وهي عمليات البيتوايز (Bitwise operators).
تذكر JavaScript ليست Java
العمليات (Operations):
هُنا جدول يوضح عمليات ال Bitwise
# | وصف العملية |
& |
المسمى: Bitwise AND
|
| |
المسمى: Bitwise OR
|
^ |
المسمى: Bitwise exclusive OR
|
~ |
المسمى: Bitwise NOT
|
المسمى: Bitwise left shift
|
|
المسمى: Bitwise right shift
|
|
المسمى: Bitwise right shift with ZERO
|
في الجدول أعلاه قمنا بوضع كل عملية مع مثال مبسط لها، ومنه نستنتج أن Bitwise Operator تتعامل مع ال Binary لكل عدد وتقارن وتزيح حسب العملية المستخدم والازاحة المعطاة.
ولنبسط الفكرة، سوف نأخذ كل عملية ونقوم بوضع مثال مشروح لها.
اولًا : Bitwise AND
لنفترض أن لدينا العدد 2 والعدد 3 كما في المثال المدرج في الجدول، ولكل عدد قيمة رقمية متسلسلة (Binary) خاصة به وكل قيمة سوف نجعلها 4 Bit أي متكونة من 4 خانات كالأتي:
العدد 2 لديه القيمة: 10 ولنجعلها 4 Bit نضيف اصفار من على اليسار لتصبح 0010
العدد 3 لديه القيمة: 11 ولنجعلها 4 Bit نضيف أصفار من على اليسار لتصبح 0011
عملية بسيطة أليس كذلك؟ وللتبسيط أكثر ياصديقي سوف نخرج عن الموضوع قليلًا لنشرح ماهي ال Binary.
باللغة العربية ( نظام العد الثنائي )، وبالإنجليزية ( Binary Numeral System ) هو نظام أعداد -غير بشري أي لا يستطيع البشر فهمه أو قراءته بسهولة - يستخدم لتمثيل قيم عددية باستخدام الرمزين (الرقمين) 1 و 0، وهو لغة الآلة أو اللغة التي يتحدث بها الكمبيوتر ( الحاسب الآلي ).
ملاحظة: نظام الأرقام الذي نستخدمه نحن بنو البشر هو Decimal Numeral System بالعربية ( نظام العد العشري ).
نعود لمثالنا، الأن عند استخدام العميلة (AND) والتي يرمز لها بالرمز & فالذي يحدث هو أن النظام يقوم بمقارنة كُل خانة من سلسلة الأرقام الأولى بكل خانة من سلسلة الأرقام الثانية ... لم تفهم صح
سأبسط لك العملية بهذه الصورة:
لاحظ المنطق، يكون الناتج 1 فقط اذا تقابل 1 مع 1 .. عدى ذلك سيكون الناتج دائمًا 0، والناتج النهائي هو الرقم 2 بالتأكيد. فهمت كيف تعمل الان ؟!
ثانيًا: Bitwise OR
لنفترض نفس المثال مع AND، والصورة التالية تشرح الأمر:
هل لاحظت الإختلاف عن العملية AND، الأن في العملية OR اذا تقابل 0 مع 0 يكون الناتج 0 عدى ذلك فهو 1.
ونفس المنطق تمامًا يعمل مع بقية العمليات عدى أن المنطق يختلف قليلًا من عملية إلى أخرى، وربما تكون أصعب عملية هي الـ Shifting ( التحريك )، كونها تحتاج لمبدأ ثابت ومنطق صارم لكي يكون الناتج صحيح.
ولنبسط الـ Shifting كما فعلنا مع الـ AND والـ OR سوف نشرحها في بطاقة ( صورة توضيحية )، وبالتأكيد سأقوم بشرح واحدة من العمليات الثلاث، كون أن فهم واحدة منهن يكفي لفهم الإثنتان الأخريين.
ثالثًا: Bitwise Shifting
الصورة التالية توضح عملية الـ Left Shift ( ):
لاحظ عندما قمنا بالتحريك لليسار ( من اليمين إلى اليسار ) تحركت الأرقام حتى خسرنا 0 من جهة اليسار، وللتعويض قمنا بوضع 0 في اليمين ... وهكذا تتم العملية.
ولكي أتأكد من عدم وجود أي غموض بالموضوع، هذه صورة متحركة تشرح الخطوات! الصورة تحتوي على مصطلحات مثل Flip Flop و Clear و Data Input تجاهلها فقط، لأن الصورة تشرح عمل ال Register وهو لا يهمنا ولكن مايهمنا توضيح الفكرة
أتمنى أن تكون الأمور أكثر وضوحًا الان، واسأل الله العلي العظيم أن أكون قد وفقت في إيصال المعلومة.
تحياتي.
عرض المزيد.. جديد مقالاتي
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !