การดำเนินการบิตที่กำหนดโดย 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 0 1 0 0 1 0
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 1 0 1 1
Bitwise ไม่ดำเนินการ:
การดำเนินการระดับบิต NOT จะดำเนินการในระดับบิตกับข้อมูลจำนวนเต็ม a และผลลัพธ์ของการดำเนินการคือข้อมูลจำนวนเต็ม c อัลกอริทึมคือ: ถ้าบิตที่สอดคล้องกันของข้อมูล a เป็น 0 ดังนั้นบิตของ c จะเป็น 1 มิฉะนั้นจะเป็น 0
ตัวอย่างเช่น:
ก:0 1 0 1 0 0 1 1
ค:1 0 1 0 1 1 0 0
การดำเนินการ 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
การดำเนินการเลื่อนไปทางซ้ายระดับ Bitwise:
อัลกอริธึมของการดำเนินการเลื่อนระดับบิตไปทางซ้ายคือ: เลื่อนตัวเลขทั้งหมดไปทางซ้ายด้วยจำนวนหลักที่สอดคล้องกันในรูปแบบไบนารี่ เลื่อนบิตสูงออก (ทิ้ง) และเติมบิตว่างในบิตต่ำด้วยศูนย์
ตัวอย่างเช่น: เลื่อนจำนวนเต็ม 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=+ค);}}
ผลการวิ่งมีดังนี้:
a&b=18a|b=123~a=-84a^b=105a>>2=41a<<2=166