สูตรการหา Bitwise Operations

สำหรับการคำนวณ และสูตรสั้นๆ ก็มีดังนี้ครับ

1. >> (Right Shift)
>> สามารถทำได้ดังนี้ เช่น 10 >> 2 แปลง 10 เป็นเลขฐานสองก่อนจะได้ (32 bit แต่แสดงแค่นี้ที่จำเป็น)
1 00001010 >> 2 เลื่อนบิตทางขวาไปสองตำแหน่ง จะได้ 000010 แทนที่ตำแหน่งทางซ้ายมือ (แทนที่ด้วย 0) จำนวนสองตำแหน่งจะได้ 000000010 ดังนั้น 10 >> 2 = 2
2 หรือ สามารถใช้สูตร x >> y = x/2y จากตัวอย่างจะได้ 10 >> 2 = 10/(22) = 2 (ปัดเศษทิ้ง)
3 ข้อมูลเพิ่มเติม Right Shift

2. >>> (Zero-Fill Right Shift)
>>> สามารถทำได้ดังนี้ เช่น 10 >>> 2 แปลง 10 เป็นเลขฐานสองก่อนจะได้ (32 bit แต่แสดงแค่นี้ที่จำเป็น)
1 00001010 >>> 2 เลื่อนบิตทางขวาไปสองตำแหน่ง จะได้ 000010 แทนที่ตำแหน่งทางซ้ายมือ (แทนที่ด้วย 0) จำนวนสองตำแหน่งจะได้ 000000010 ดังนั้น 10 >>> 2 = 2
2 ข้อแตกต่างระหว่าง Right Shift และ Zero-Fill Right Shift คือการกระทำกับเครื่องหมาย (-) ใน Right Shift จะคงเครื่องหมายไว้เช่นเดิมส่วน Zero-Fill Right Shift จะคำนวณ หรือเปลี่ยนจากฐาน 10 เป็นฐานสองโดยยังคงเครื่องหมายอยู่เช่น เปลี่ยนจาก -10 = 11111111 11111111 11111111 11110110 แล้วค่อยมาทำการ shift bit หลังจาก shift แล้วแทนที bit ที่ shift ไปด้วย 0 เสมอ
3 ข้อมูลเพิ่มเติม Zero-Fill Right Shift

3. << (Left-Shift)
<< สามารถทำได้ดังนี้ เช่น 10 << 2 แปลง 10 เป็นเลขฐานสองก่อนจะได้(32 bit แต่แสดงแค่นี้ที่จำเป็น) 1 00001010 << 2 เลื่อนบิตทางซ้ายไปสองตำแหน่ง จะได้ 001010 แทนที่ตำแหน่งทางซ้ายมือ (แทนที่ด้วย 0) จำนวนสองตำแหน่งจะได้ 00101000 ดังนั้น 10 << 2 =40 2 หรือ สามารถใช้สูตร x << y = x*2y จากตัวอย่างจะได้ 10 << 2 = 10*(22) = 40 3 ข้อมูลเพิ่มเติม Left Shift ตัวอย่างอ้างอิงจากภาษา Java นะครับ แต่คิดว่าทุกภาษาที่ทำ Bitwise Operator ได้ไม่น่าจะแตกต่างกันครับ ข้อมูลจาก
bitwise (ไทย)
Right Shift
Zero-Fill Right Shift
Left Shift

  1. No comments yet.

  1. No trackbacks yet.