Javaعوامل وحدات الحاسوب في جافا
- العامل & (Bitwize AND)
- العامل | (Bitwize OR)
- العامل ^ (Bitwize XOR)
- العامل ~ (Bitwize Compliment OR)
- العامل << (Left Shift)
- العامل >> (Right Shift)
- العامل >>> (Zero Fill Right Shift)
العامل & (Bitwize AND)
العامل & يحسب ناتج جمع البتات (Bits) المشتركة بين قيمتين.
مثال
سنحصل على النتيجة التالية عند التشغيل.
هنا قمنا بتعليم البتات المشتركة و التي تم جمعها باللون الاصفر.
b = 75; // 75 = 00000000000000000000000001001011
c = a & b; // c = 00000000000000000000000000001010
// c = 10
العامل | (Bitwize OR)
العامل | يحسب ناتج جمع البتات المشتركة و الغير مشتركة بين قيمتين.
مثال
سنحصل على النتيجة التالية عند التشغيل.
هنا قمنا بتعليم البتات المشتركة و الغير مشتركة و التي تم جمعها باللون الاصفر.
b = 75; // 75 = 00000000000000000000000001001011
c = a | b; // c = 00000000000000000000000001001011
// c = 75
العامل ^ (Bitwize XOR)
العامل ^ يحسب ناتج جمع البتات الغير مشتركة بين قيمتين.
مثال
سنحصل على النتيجة التالية عند التشغيل.
هنا قمنا بتعليم البتات الغير مشتركة و التي تم جمعها باللون الاصفر.
b = 75; // 75 = 00000000000000000000000001001011
c = a | b; // c = 00000000000000000000000001000001
// c = 65
العامل ~ (Bitwize Compliment OR)
العامل ~ يقلب البتات التي تساوي 0 إلى 1 و يقلب البتات التي تساوي 1 إلى 0.
بعدها يتم حساب الناتج باتباع مبدأ إسمه single precision floating point number.
مثال
سنحصل على النتيجة التالية عند التشغيل.
العامل << (Left Shift)
العامل << يمسح بتات من ناحية اليسار ثم يبدل كل بت تم مسحه منهم بصفر و يضعهم من ناحية اليمين.
مثال
سنحصل على النتيجة التالية عند التشغيل.
هنا قمنا بتعليم البتات التي تم مسحها باللون الاصفر و تعليم البتات التي تم إضافتها باللون الأزرق.
c = a << 2; // c = 00000000000000000000000000101000 = 40
// c = 40
العامل >> (Right Shift)
العامل >> عندها حالتين: قد يكون العدد أكبر من صفر أو أصغر من صفر.
- إذا كان العدد أكبر من صفر, يمسح بتات من ناحية اليمين ثم يبدل كل بت منهم بصفر و يضعهم من ناحية اليسار.
- إذا كان العدد أصغر من صفر, يمسح بتات من ناحية اليمين ثم يبدل كل بت منهم بواحد ليحافظ على إشارة الناقص و يضعهم من ناحية اليسار.
المثال الأول
الحالة الأولى: إذا كان العدد أكبر من صفر.
سنحصل على النتيجة التالية عند التشغيل.
هنا قمنا بتعليم البتات التي تم مسحها باللون الاصفر و تعليم البتات التي تم إضافتها باللون الأزرق.
c = a >> 2; // c = 00000000000000000000000000000010
// c = 2
المثال الثاني
الحالة الثانية: إذا كان العدد أصغر من صفر.
سنحصل على النتيجة التالية عند التشغيل.
هنا قمنا بتعليم البتات التي تم مسحها باللون الاصفر و تعليم البتات التي تم إضافتها باللون الأزرق.
c = a >> 2; // c = 11111111111111111111111111111101
// c = -3
العامل >>> (Zero Fill Right Shift)
العامل >>> يمسح بتات من ناحية اليمين ثم يبدل كل بت منهم بصفر و يضعهم من ناحية اليسار.
مثال
سنحصل على النتيجة التالية عند التشغيل.
ما هو الفرق بين العامل >>> و العامل >>؟
الفرق بنهما هو أن العامل >>> يحول دائماً آخر بت في العدد إلى 0 و هذا سيجعل الناتج دائماً رقم أكبر أو يساوي 0.