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
ตัวอย่าง:
| ตัวอย่าง | ผลลัพธ์ |
|---|---|
|
|
|
|
|
|
|
|
2. |ตัวดำเนินการ ระดับบิต
ตัวดำเนินการนี้คล้ายกับ|ตัวดำเนินการเชิงตรรกะ (OR) มาก แต่จะแสดงด้วยเส้นแนวตั้งเส้นเดียว ไม่ใช่สองเส้น:
a | b
และนำไปใช้กับแต่ละบิต แต่ละโอเปอเรเตอร์จะถือว่าเป็นอาร์เรย์ของบิต และบิตที่ ith ของผลลัพธ์จะถูกคำนวณโดยใช้บิตที่ ith ของแต่ละตัวถูกดำเนินการทั้งสอง
ตัวดำเนินการ ระดับบิต|(OR) หมายถึง "บิตผลลัพธ์มีค่าเท่ากับหนึ่งหากบิตที่สอดคล้องกันของตัวเลขaเท่ากับหนึ่งORบิตที่สอดคล้องกันของตัวเลขbเท่ากับหนึ่ง":
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
ตัวอย่าง:
| ตัวอย่าง | ผลลัพธ์ |
|---|---|
|
|
|
|
|
|
|
|
เฉพาะเมื่อบิตที่สอดคล้องกัน (บิตที่ตำแหน่งเดียวกัน) ของตัวเลขทั้งสองเป็นศูนย์เท่านั้น บิตที่สอดคล้องกันของผลลัพธ์จะเท่ากับศูนย์
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
ตัวอย่าง:
| ตัวอย่าง | ผลลัพธ์ |
|---|---|
|
|
|
|
|
|
|
|
เฉพาะเมื่อบิตที่สอดคล้องกัน (บิตที่ตำแหน่งเดียวกัน) ของตัวเลขทั้งสองแตกต่างกันเท่านั้นบิตที่สอดคล้องกันของผลลัพธ์จะเท่ากับหนึ่ง ถ้าบิตเหมือนกันบิตผลลัพธ์จะเท่ากับศูนย์
4. ตัวดำเนินการ Bitwise ~(ไม่เสริม)
ฉันคิดว่าคุณเดาได้อยู่แล้วว่ามันทำอะไร ตัวดำเนินการนี้คล้ายกับ!ตัวดำเนินการเชิงตรรกะ (NOT) มาก แต่จะแสดงด้วยเครื่องหมายtildeไม่ใช่เครื่องหมายอัศเจรีย์:
~a
นี่คือ ตัวดำเนินการ เอกฐานซึ่งหมายความว่าใช้กับเลขตัวเดียว ไม่ใช่สองตัว ปรากฏก่อนตัวดำเนินการเดี่ยวนี้
ตัวดำเนินการ ระดับบิต~หมายถึง "บิตผลลัพธ์จะเป็นหนึ่งหากบิตที่สอดคล้องกันของตัวเลขaเป็นศูนย์ และเป็นศูนย์หากบิตที่สอดคล้องกันของตัวเลขaเป็นหนึ่ง":
~1 = 0
~0 = 1
ตัวอย่าง:
| ตัวอย่าง | ผลลัพธ์ |
|---|---|
|
|
|
|
|
|
|
|
ตัวดำเนินการนี้เพียงแค่เปลี่ยนบิตที่เป็น1ถึง0และบิตที่เป็น0ถึง1
GO TO FULL VERSION