Operators in Python 8

สัญลักษณ์ตัวดำเนินการตัวอย่างความหมาย
&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 ได้ ซึ่งจะขอพูดถึงในบทความต่อไป

Write a comment