9. การคำนวณเลขฐานสอง


9. การคำนวณเลขฐานสอง
9.1 การบวกเลขฐานสอง
ตัวอย่างที่ 9 จงบวก (1011)2 เข้ากับ (1001)2
  (1 0 1 1)2
                +
   (1 0 0 1)2
(1 0 1 0 0)2
จากตัวอย่างข้างต้น อธิบายการบวกเป็นขั้นตอนได้ดังนี้
ตัวที่ 1 : (นับจากทางขวาสุด) 1 + 1 = 2 ผลลัพธ์ที่ได้ = 2 เราเอา 2 ไปลบออก (การที่เอา 2 ไปลบออกเนื่องจากเป็นเลขฐานสอง) จะได้ 2 - 2 = 0 แล้วทดไป 1
ตัวที่ 2 : 1 + 0 = 1 รวมกับตัวทดอีก 1 จึงเท่ากับ 2 ผลลัพธ์ที่ได้ = 2 เราก็เอา 2 ไปลบออก จะได้ 2 - 2 = 0 เราจึงใส่ 0 แล้วทดไป 1
ตัวที่ 3 : 0 + 0 = 0 รวมกับตัวทดอีก 1 จึงเท่ากับ 1 เนื่องจาก 1 เป็นตัวเลขที่ไม่ถึง 2 ก็ไม่ต้องเอา 2 ไปลบออกแต่อย่างใด เราจึงใส่ 1 ลงไป และไม่มีตัวทด
ตัวที่ 4 : 1 + 1 = 2 ผลลัพธ์ที่ได้ = 2 เราก็เอา 2 ไปลบออก จะได้ 2 - 2 = 0 เราจึงใส่ 0 แล้วทดไป 1 ตัวทด 1 ที่ได้ไม่มีตัวบวกอีกแล้ว เราก็ก็ใส่ 1 ลงไปข้างหน้า ก็จะได้ผลลัพธ์ตามต้องการ
    การบวกเลขฐานแปด และเลขฐานสิบหก ก็มีวิธีการเช่นเดียวกันกับที่กล่าวมาแล้ว กล่าวคือ ถ้าเป็นการบวกเลขฐานแปด ผลบวกของแต่ละตัวที่ได้ ถ้ามีค่าตั้งแต่ 8 ขึ้นไป ก็ให้เอา 8 ไปลบลบออกเหลือเท่าไรก็ให้ใส่ค่านั้นลงไปแล้วทดไป 1 ส่วนการบวกเลขฐานสิบหกก็เช่นเดียวกันคือ ผลบวกของแต่ละตัวที่ได้ ถ้ามีค่าตั้งแต่ 16 ขึ้นไป ก็ให้เอา 16 ไปลบออก เหลือเท่าไรก็ให้ใส่ค่านั้นลงไปแล้วทดไป 1
9.2 การลบเลขฐานสอง
    การลบเลขไม่ว่าจะเป็นเลขฐานอะไรก็แล้วแต่ มีหลักการเหมือนกัน หลักการสำคัญที่ควรรู้มีดังนี้
กรณีตัวตั้งมากกว่าหรือเท่ากับตัวลบ ก็ให้ลบกันตามปกติ เช่น
(7)8 - (5)8 = (2)8 (A)16 - (6)16 = (4)16 เป็นต้น
กรณีตัวตั้งน้อยกว่าตัวลบ การลบกันก็ต้องมีตัวยืม โดยการยืมตัวถัดไป การยืมแต่ละครั้งมีหลักเกณฑ์คือ ให้ยืมตัวหน้ามา 1 ตัว ที่ให้ยืมไปมีค่าลดลงไป 1 ค่า 1 ที่ยืมมานั้น จะมีค่เท่ากับค่าของฐานเลขนั้น (เช่น เลขฐานสิบ 1 ที่ยืมมาจะมีค่าเท่ากับ 10 เลขฐานสอง ค่า 1 ที่ยืมมาจะมีค่าเท่ากับ 2 เลขฐานแปด ค่า 1 ที่ยืมมามีค่าเท่ากับ 8 เลขฐานสิบหก ค่า 1 ที่ยืมมาจะมีค่าเท่ากับ 16 เป็นต้น) ให้นำไปบวกกับตัวยืม ได้เท่าไรก็นำตัวลบมาลบออก ก็จะได้ผลลัพธ์ที่ตามต้องการ
คอมพลีเมนต์ (Complement)
    เนื่องจากเลข Binary เป็นระบบตัวเลขที่ใช้ในเครื่อง Computer ดังนั้น เมื่อใช้เครื่อง Computer ทำการลบเลข Binary ก็ต้องมีวงจรลบแยกออกต่างหากจากวงจรบวก ซึ่งจะมีความยุ่งยากเกิดขึ้น เพราะมีเครื่องหมายติดมาด้วย วิธีที่นิยมก็คือ การบวกหรือการลบ เราใช้วิธีการบวกแต่เพียงอย่างเดียว ตัวเลขที่เป็นค่าลบ เราใช้ Complement แทนผลลัพธ์จะได้ค่าเครื่องหมายติดมาด้วย
Complement คืออะไร
Complement ในระบบเลข Binary มีอยู่ 2 แบบ คือ 1’s Complement และ 2’s Complement
1's Complement คือการกลับสถานะของสัญญาณ กล่าวคือ สัญญาณ 1 เปลี่ยนเป็นสัญญาณ 0 และสัญญาณ 0 เปลี่ยนเป็น สัญญาณ 1
2's Complement คือ ผลบวกของ 1's Complement กับเลข 1 ทั้งนี้เพื่อประโยชน์สำหรับทำการลบเลข และเป็นการแสดงค่าเลขที่เป็นค่าลบในระบบ Computer
ตัวอย่างที่ 10 จงหาค่า 1's Complement และ 2's Complement ของเลข Binary ต่อไปนี้
(ก) 01101
วิธีทำ 1's Complement ของ 01101 = 10010
        2's Complement ของ 01101 = 10011
การลบเลข Binary โดยใช้ 1's Complement
    การลบเลข Binary โดยใช้ 1's Complement มีวิธีการดังนี้
ก. หา 1’s Complement ของตัวลบ ถ้าจำนวน bit ของตัวลบมีน้อยกว่าตัวตั้ง ก็ต้องทำจำนวน bit ของตัวลบให้เท่ากับจำนวน bit ของตัวตั้งเสียก่อน
ข. นำตัวตั้งมาบวกกับ 1' s Complement ของตัวลบที่ได้จากข้อ ก.
ค. ผลบวกจากข้อ ข. ถ้ามี End around carry (ตัวทดตัวสุดท้าย) ก็ให้นำมาบวกกับ bit ที่มีนัยสำคัญต่ำสุด (LSD) ผลบวกที่ได้ก็คือ ผลลัพธ์ตามต้องการ และมีค่าเป็นบวก
ง. ผลบวกจากข้อ ข. ถ้าไม่มี End around carry ก็ให้หา 1's Complement ของเลขผลบวกนั้น ได้เท่าไร ก็คือผลลัพธ์ตามต้องการ และมีค่าเป็นลบ
ตัวอย่างที่ 11 จงลบเลข Binary ต่อไปนี้โดยใช้ 1's complement
(ก) 110111 - 100101
วิธีทำ 1's complement ของตัวลบ 100101 = 011010
                                   110111
                                                +
                                   011010
End around carry        010001 (มีตัวทด นำตัวทดคือ 1 ไปบวกกับบิตท้ายสุดของผลลัพธ์)
                                                +
                                             1
                                   010010
นั่นคือ 110111 - 100101 = 10010
การลบเลข Binary โดยใช้ 2's Complement
    การลบเลข Binary โดยใช้ 2's complement มีวิธีการดังนี้
ก. หา 2's complement ของตัวลบ ถ้าจำนวน bit ของตัวลบมีน้อยกว่าตัวตั้ง ก็ต้องทำจำนวน bit ของตัวลบให้เท่ากับจำนวน bit ของตัวตั้งเสียก่อน
ข. นำตัวตั้งมาบวกกับ 2's complement ของตัวลบที่ได้จากข้อ ก.
ค. ผลบวกจากข้อ ข. ถ้ามี End around carry ให้ตัดทิ้ง ที่เหลือก็คือผลลัพธ์ตามต้องการและมีค่าเป็นบวก
ง. ผลบวกจากข้อ ข. ถ้าไม่มี End around carry ก็ให้หา 2's complement ของเลขผลบวกนั้น ได้เท่าไรก็คือผลลัพธ์ตามต้องการ และมีค่าเป็นลบ
ตัวอย่างที่ 12 จงลบเลข Binary ต่อไปนี้โดยใช้ 2's complement
(ก) 110111 - 100101
วิธีทำ 2's complement ของตัวลบ (100101) = 011011
                                               110111
                                                            +
                                               011011
End around carry 1 <- ตัดทิ้ง  010010
นั่นคือ 110111 - 100101 = 10010