สัญลักษณ์ตัวดำเนินการ | ตัวอย่าง | ความหมาย |
& | 0101 & 0110 | หาค่าความจริงของแต่ละหลักด้วยตัวดำเนินการแบบ and |
| | 1010 | 1101 | หาค่าความจริงของแต่ละหลักด้วยตัวดำเนินการแบบ or |
^ | 1111 ^ 0010 | หาค่าความจริงของแต่ละหลักด้วยตัวดำเนินการแบบ xor |
~ | ~1101 | หาค่าความจริงของแต่ละหลักด้วยตัวดำเนินการแบบ not |
<< | 1010 << 2 | ย้ายเลขทุกตัวไปทางซ้ายและเพิ่มศูนย์แทนที่ (Shifting) |
>> | 1010 >> 2 | ย้ายเลขทุกตัวไปทางขวาและเพิ่มศูนย์แทนที่ (Shifting) |
ในบทความนี้เราจะมาต่อกันในเรื่องของ Bitwise Operators ในภาษาไพทอนกันนะครับ
ในตัวอย่างแรกเราจะให้ตัวเลขชุดแรกขึ้นก่อน
0101
&
0110
แล้วเราจะเปรียบเทียบทีละหน่วย เราจะได้ว่า
0 & 0, 1 & 1, 0 & 1, 1 & 0
ซึ่งจะผลลัพธ์เป็น 0100 นั่นเอง
หากพูดง่ายๆก็เหมือนกับเราทำ Logical Operators หลายๆตัวพร้อมกันนั่นเอง
ต่อมาตัวอย่างที่สอง
1010
|
1101
เราจะเทียบกันโดยใช้แต่ละหลักเช่นเดิม โดยใช้ or operator เราจะได้คำตอบเป็น 1101
ต่อมาเป็น xor ซึ่งไม่ค่อยได้ใช้ในการเขียนโปรแกรมทั่วไปเท่าใดนัก โดยเราสามารถเทียบได้จากตารางด้านล่าง
จะเห็นได้ว่า เมื่อมี Statement ใดเป็นจริงเพียงแค่ Statement เดียว (เท่านั้น) จะทำให้ผลลัพธ์เป็น True นอกจากนั้นจะทำให้ผลลัพธ์เป็น False จากตัวอย่างที่ 3 เราจะเขียนได้โดย
1111
^
0011
จากตารางด้านบนเราจะได้คำตอบเป็น 1100 นั่นเอง
โดยสำหรับตัวอย่างที่ 4 เพียงแค่สลับค่าความจริง ~1101 = 0010
ตัวอย่างที่ 5 กับ 6 ก็ไม่ยากเช่นกัน เป็นการเลื่อนตำแหน่งของค่าต่างๆในตัวเลขชุดนั้น (Shifting)
โดยตัวอย่าง 1011 << 2 หมายความว่าย้ายเลขทุกตัวไปทางซ้ายและเพิ่มศูนย์แทนที่
ดังนั้นผลลัพธ์จะได้เป็น 101100 จะเห็นว่ามีศูนย์เพิ่มมาแทนที่และ 1011 ย้ายไปทางซ้าย 2 หลัก
เช่นเดียวกับ 1011 >> 2 เราจะได้ผลลัพธ์เป็น 0010 แทนเพราะ 11 ถูกดันออกทางขวาจนหายไป และจะเพิ่มศูนย์ให้กับตำแหน่งที่ถูกเลื่อนนั่นก็คือตำแหน่งที่ 3 และ 4
ในบทความ Operators in Python 7 – 8 เราให้แต่ละหลักแทนด้วยค่าความจริงของ Statement นั้นๆ
ซึ่งในอีกกรณีหนึ่งที่จะพูดถึงนั่นก็คือค่า Binary เช่น 1101 สามารถแปลงเป็นตัวเลขปกติได้ โดย 1101 = 13 หรือสามารถแปลง 13 = 1101 ได้เช่นกัน เราเรียกสิ่งนี้ว่า Binary Number Representation และสามารถนำมาใช้กับ Bitwise Operators ได้ ซึ่งจะขอพูดถึงในบทความต่อไป