تنطبق عمليات البت التي تحددها Java على أنواع الأعداد الصحيحة مثل int وlong وshort وchar وbyte.
تُستخدم عوامل Bitwise بشكل أساسي لتنفيذ العمليات على البتات الثنائية للمعاملات. تمثل عمليات Bitwise الحسابات بناءً على كل رقم ثنائي. تكون المعاملات ونتائج العملية عبارة عن قيم صحيحة. إذا كانت نتيجة العملية رقمًا سالبًا، فسيتم استخدام التمثيل المكمل .
تنقسم عوامل البت في لغة Java إلى فئتين: عوامل البت المنطقية وعوامل إزاحة البت.
Bitwise والتشغيل:
تقوم عملية AND بإجراء عملية بت على اثنين من البيانات الصحيحة a وb، ونتيجة العملية هي بيانات عددية c. الخوارزمية هي: إذا كانت البتات المقابلة للبيانات a وb كلاهما 1، فإن البت c هو 1، وإلا فهو 0.
على سبيل المثال:
أ: 0 1 0 1 0 0 1 1
ب:0 0 1 1 1 0 1 0
ج: 0 0 1 0 0 1 0
عملية Bitwise أو:
تقوم عملية bitwise OR بإجراء عملية bitwise على بيانات عددية صحيحة a وb، وتكون نتيجة العملية عبارة عن بيانات عددية c. الخوارزمية هي: إذا كانت البتات المقابلة للبيانات a وb كلاهما 0، فإن البت c هو 0، وإلا فهو 1.
على سبيل المثال:
أ: 0 1 0 1 0 0 1 1
ب:0 0 1 1 1 0 1 0
ج: 0 1 1 1 0 1 1
عملية لا تعتمد على البت:
تنفذ عملية bitwise NOT عملية bitwise على بيانات عدد صحيح a، وتكون نتيجة العملية بيانات عدد صحيح c. الخوارزمية هي: إذا كانت البتة المقابلة من البيانات a هي 0، فإن البتة c هي 1، وإلا فهي 0.
على سبيل المثال:
أ: 0 1 0 1 0 0 1 1
ج: 1 0 1 0 1 1 0 0
عملية Bitwise XOR:
تقوم عملية XOR ذات البتات بإجراء عملية بت على اثنين من البيانات الصحيحة a وb، وتكون نتيجة العملية هي بيانات عددية c. الخوارزمية هي: إذا كانت البتات المقابلة للبيانات a وb متماثلة، فإن البت c يكون 0، وإلا فهو 1.
على سبيل المثال:
أ: 0 1 0 1 0 0 1 1
ب:0 0 1 1 1 0 1 0
ج: 0 1 1 0 1 0 0 1
عملية التحول إلى اليمين باتجاه البت:
خوارزمية عملية التحول إلى اليمين باتجاه البت هي كما يلي: انقل جميع الأرقام إلى اليمين بالعدد المقابل من الأرقام في النموذج الثنائي، وقم بإزاحة (تجاهل) البتات المنخفضة، وملء البتات الفارغة في البتات العالية بالأصفار.
على سبيل المثال: قم بإزاحة العدد الصحيح 83 إلى اليمين بمقدار 1 بت
قبل النقل: 0 1 0 1 0 0 1 1
بعد التحول: 0 0 1 0 1 0 0 1
عملية التحول إلى اليسار باتجاه البت:
خوارزمية عملية التحول إلى اليسار باتجاه البت هي: تحويل جميع الأرقام إلى اليسار بالعدد المقابل من الأرقام في شكل ثنائي، وإزاحة البتات العالية (تجاهل)، وملء البتات الفارغة في البتات المنخفضة بالأصفار.
على سبيل المثال: قم بإزاحة العدد الصحيح 83 إلى اليسار بمقدار 1 بت
قبل النقل: 0 1 0 1 0 0 1 1
بعد التحول: 1 0 1 0 0 1 1 0
مثال:
publicclassMain{publicstaticvoidmain(String[]args){inta=83;/*83=01010011*/intb=58;/*58=00111010*/intc=0;c=a&b;/*18=00010010*/System.out .println(a&b=+c);c=a|b;/*123=01111011*/System.out.println(a|b=+c);c=~a;/*01010011 هو 10101100 بعد النفي تكملة 10101100 هي 11010100, -84=11010100*/System.out.println(~a=+c);c=a^b;/*105=01101001*/System.out.println(a^b=+ c );c=a>>1;/*41=00101001*/System.out.println(a>>2=+c);c=a<<1;/*166=10100110*/System.out (أ<<2=+ج);}}
نتائج التشغيل هي كما يلي:
أ&b=18a|b=123~a=-84a^b=105a>>2=41a<<2=166