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