1. &ตัวดำเนินการ ระดับบิต

ก่อนหน้านี้เรากล่าวว่าข้อมูลทั้งหมดถูกเก็บไว้ในหน่วยความจำในรูปแบบไบนารี เมื่อนานมาแล้ว โปรแกรมเมอร์ได้คิดค้นวิธีที่น่าสนใจมากมายในการทำงานกับเลขฐานสอง ตัวอย่างเช่น Java มีตัวดำเนินการเชิงตรรกะที่ทำงานบนบิตของการแทนเลขฐานสองของตัวเลข: &(AND), | (OR), ~(NOT หรือส่วนเติมเต็ม) และ^(XOR - พิเศษ หรือ)

a & b
ตัวดำเนินการ ระดับบิต&(AND)

ตัวดำเนินการนี้คล้ายกับ&ตัวดำเนินการเชิงตรรกะ (AND) มาก แต่จะแสดงด้วยเครื่องหมายแอมเปอร์แซนด์ตัวเดียว ไม่ใช่สองตัว:

และนำไปใช้กับแต่ละบิต ตัวถูกดำเนินการแต่ละตัวจะถือว่าเป็นอาร์เรย์ของบิต และiบิตที่ 3 ของผลลัพธ์จะถูกคำนวณโดยใช้iบิตที่ 3 ของตัวถูกดำเนินการแต่ละตัว

บิตแรกของผลลัพธ์จะถูกคำนวณตามบิตแรกของตัวเลขa และบิตแรกของตัวเลขbบิตที่สอง — ขึ้นอยู่กับบิตที่สองของตัวเลขa และบิตที่สองของตัวเลขbเป็นต้น

ตัว&ดำเนินการ (AND) หมายถึง "บิตผลลัพธ์จะเท่ากับหนึ่งก็ต่อเมื่อบิตที่สอดคล้องกันของตัวเลขaมีค่าเท่ากับหนึ่งANDบิตที่สอดคล้องกันของตัวเลขbจะเท่ากับหนึ่งเท่านั้น":

1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0

ตัวอย่าง:

ตัวอย่าง ผลลัพธ์
0b0011 & 0b1010
0b0010
0b1111 & 0b0000
0b0000
0b1010 & 0b0101
0b0000
0b1111 & 0b1010
0b1010

2. |ตัวดำเนินการ ระดับบิต

ตัวดำเนินการนี้คล้ายกับ|ตัวดำเนินการเชิงตรรกะ (OR) มาก แต่จะแสดงด้วยเส้นแนวตั้งเส้นเดียว ไม่ใช่สองเส้น:

a | b

และนำไปใช้กับแต่ละบิต แต่ละโอเปอเรเตอร์จะถือว่าเป็นอาร์เรย์ของบิต และบิตที่ ith ของผลลัพธ์จะถูกคำนวณโดยใช้บิตที่ ith ของแต่ละตัวถูกดำเนินการทั้งสอง

ตัวดำเนินการ ระดับบิต|(OR) หมายถึง "บิตผลลัพธ์มีค่าเท่ากับหนึ่งหากบิตที่สอดคล้องกันของตัวเลขaเท่ากับหนึ่งORบิตที่สอดคล้องกันของตัวเลขbเท่ากับหนึ่ง":

1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0

ตัวอย่าง:

ตัวอย่าง ผลลัพธ์
0b0011 | 0b1010
0b1011
0b1110 | 0b0000
0b1110
0b1010 | 0b0101
0b1111
0b1111 | 0b1010
0b1111

เฉพาะเมื่อบิตที่สอดคล้องกัน (บิตที่ตำแหน่งเดียวกัน) ของตัวเลขทั้งสองเป็นศูนย์เท่านั้น บิตที่สอดคล้องกันของผลลัพธ์จะเท่ากับศูนย์



3. ตัวดำเนินการ Bitwise ^(XOR หรือ "พิเศษหรือ")

โอXORเปอเรเตอร์ที่ออกเสียงว่าเอกสิทธิ์ หรือจะแสดงด้วย^สัญลักษณ์ หากต้องการป้อนบนแป้นพิมพ์ ให้กดshift + 6 (ในรูปแบบแป้นพิมพ์ภาษาอังกฤษ)

a ^ b

ตัวดำเนินการนี้ค่อนข้างคล้ายกับORตัวดำเนินการ รวมทั้งมีชื่อที่คล้ายกัน:XOR

ตัวดำเนินการ ระดับบิต^(XOR) หมายถึง "บิตผลลัพธ์มีค่าเท่ากับหนึ่งหากบิตที่สอดคล้องกันของตัวเลขaมีค่าเท่ากับหนึ่งORบิตที่สอดคล้องกันของตัวเลขbมีค่าเท่ากับหนึ่ง แต่ไม่ใช่ทั้งคู่ในเวลาเดียวกัน":

1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0

ตัวอย่าง:

ตัวอย่าง ผลลัพธ์
0b0011 ^ 0b1010
0b1001
0b1110 ^ 0b0000
0b1110
0b1010 ^ 0b0101
0b1111
0b1111 ^ 0b1010
0b0101

เฉพาะเมื่อบิตที่สอดคล้องกัน (บิตที่ตำแหน่งเดียวกัน) ของตัวเลขทั้งสองแตกต่างกันเท่านั้นบิตที่สอดคล้องกันของผลลัพธ์จะเท่ากับหนึ่ง ถ้าบิตเหมือนกันบิตผลลัพธ์จะเท่ากับศูนย์



4. ตัวดำเนินการ Bitwise ~(ไม่เสริม)

ฉันคิดว่าคุณเดาได้อยู่แล้วว่ามันทำอะไร ตัวดำเนินการนี้คล้ายกับ!ตัวดำเนินการเชิงตรรกะ (NOT) มาก แต่จะแสดงด้วยเครื่องหมายtildeไม่ใช่เครื่องหมายอัศเจรีย์:

~a

นี่คือ ตัวดำเนินการ เอกฐานซึ่งหมายความว่าใช้กับเลขตัวเดียว ไม่ใช่สองตัว ปรากฏก่อนตัวดำเนินการเดี่ยวนี้

ตัวดำเนินการ ระดับบิต~หมายถึง "บิตผลลัพธ์จะเป็นหนึ่งหากบิตที่สอดคล้องกันของตัวเลขaเป็นศูนย์ และเป็นศูนย์หากบิตที่สอดคล้องกันของตัวเลขaเป็นหนึ่ง":

~1 = 0
~0 = 1

ตัวอย่าง:

ตัวอย่าง ผลลัพธ์
~0b0011
0b1100
~0b0000
0b1111
~0b0101
0b1010
~0b1111
0b0000

ตัวดำเนินการนี้เพียงแค่เปลี่ยนบิตที่เป็น1ถึง0และบิตที่เป็น0ถึง1