جافاسكربتالعوامل التي تستخدم للتعامل مع البتات
- العامل
&
(Bitwise AND Operator) - العامل
|
(Bitwise OR Operator) - العامل
^
(Bitwise XOR Operator) - العامل
~
(Bitwise Compliment OR Operator) - العامل
<<
(Left Shift Operator) - العامل
>>
(Right Shift Operator)
العامل &
(Bitwise AND Operator)
العامل &
يحسب ناتج جمع البتات المشتركة بين قيمتين.
مثال
let a = 10; // a = 10 = 00000000000000000000000000001010 let b = 75; // b = 75 = 00000000000000000000000001001011 let c = a & b; // شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل document.write(a + ' & ' + b + ' = ' + c);
النتيجة
هنا قمنا بتعليم البتات المشتركة بين المتغيرين a
و b
حتى تلاحظ كيف تم حساب ناتجهم في المتغير c
.
b = 75 // 75 = 00000000000000000000000001001011
c = a & b // c = 00000000000000000000000000001010 = 10
العامل |
(Bitwise OR Operator)
العامل |
يحسب ناتج جمع البتات المشتركة و الغير مشتركة بين قيمتين.
مثال
let a = 10; // a = 10 = 00000000000000000000000000001010 let b = 75; // b = 75 = 00000000000000000000000001001011 let c = a | b; // شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل document.write(a + ' | ' + b + ' = ' + c);
النتيجة
هنا قمنا بتعليم البتات المشتركة و الغير مشتركة بين المتغيرين a
و b
حتى تلاحظ كيف تم حساب ناتجهم في المتغير c
.
b = 75 // 75 = 00000000000000000000000001001011
c = a | b // c = 00000000000000000000000001001011 = 75
العامل ^
(Bitwise XOR Operator)
العامل ^
يحسب ناتج جمع البتات الغير مشتركة بين قيمتين.
مثال
let a = 10; // a = 10 = 00000000000000000000000000001010 let b = 75; // b = 75 = 00000000000000000000000001001011 let c = a ^ b; // شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل document.write(a + ' ^ ' + b + ' = ' + c);
النتيجة
هنا قمنا بتعليم البتات الغير مشتركة بين المتغيرين a
و b
حتى تلاحظ كيف تم حساب ناتجهم في المتغير c
.
b = 75 // 75 = 00000000000000000000000001001011
c = a ^ b // c = 00000000000000000000000001000001 = 65
العامل ~
(Bitwise Compliment OR Operator)
العامل ~
يقلب البتات التي تساوي 0 إلى 1 و يقلب البتات التي تساوي 1 إلى 0.
بعدها يتم حساب الناتج باتباع مبدأ يسمى single precision floating point number
مثال
let a = 10; // a = 10 = 00000000000000000000000000001010 let b = ~a; // b = 11111111111111111111111111110111 = -11 document.write('~' + a + ' = ' + b);
النتيجة
العامل <<
(Left Shift Operator)
العامل <<
يمسح بتات من ناحية اليسار ثم يبدل كل بت تم مسحها منهم بصفر و يضعهم من ناحية اليمين.
مثال
let a = 10; // 10 = 00000000000000000000000000001010 let b = a << 2; // شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل document.write(a + ' << ' + 2 + ' = ' + b);
النتيجة
هنا قمنا بتعليم البتات التي تم مسحها جهة اليسار و من ثم البتات التي تم إضافتها من جهة اليمين.
b = a << 2 // b = 00000000000000000000000000101000 = 40
العامل >>
(Right Shift Operator)
العامل >>
عندها حالتين: قد يكون العدد أكبر من صفر أو أصغر من صفر.
- إذا كان العدد أكبر من صفر، يمسح البتات من ناحية اليمين ثم يبدل كل بت منهم بصفر و يضعهم من ناحية اليسار.
- إذا كان العدد أصغر من صفر، يمسح البتات من ناحية اليمين ثم يبدل كل بت منهم بواحد ليحافظ على إشارة الناقص و يضعهم من ناحية اليسار.
في المثال التالي سنفترض أن العدد أكبر من صفر.
المثال الأول
let a = 9 // 9 = 00000000000000000000000000001001 let b = a >> 2 // شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل document.write(a + ' >> 2 = ' + b);
النتيجة
هنا قمنا بتعليم البتات التي تم مسحها جهة اليسار و من ثم البتات التي تم إضافتها من جهة اليمين.
b = a >> 2 // b = 00000000000000000000000000000010 = 2
في المثال التالي سنفترض أن العدد أصغر من صفر.
المثال الثاني
let a = -9 // -9 = 11111111111111111111111111110111 let b = a >> 2 // شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل document.write(a + ' >> 2 = ' + b);
النتيجة
هنا قمنا بتعليم البتات التي تم مسحها جهة اليسار و من ثم البتات التي تم إضافتها من جهة اليمين.
b = a >> 2 // b = 11111111111111111111111111111101 = -3