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

8. การแปลงเลขฐานสองเป็นฐานสิบหก และการแปลงเลขฐานสิบหกเป็นฐานสอง


8. การแปลงเลขฐานสองเป็นฐานสิบหก และการแปลงเลขฐานสิบหกเป็นฐานสอง
    การแปลงเลขฐานสองเป็นเลขฐานสิบหก และการแปลงเลขฐานสิบหกเป็นเลขฐานสอง สามารถทำได้โดยการแปลงเป็น เลขฐานสิบเสียก่อน ตามที่ได้กล่าวมาแล้ว ในข้อ 1.6 ส่วนวิธีที่ง่ายก็คล้ายๆ กันกับการแปลงเลข Binary เป็นเลข Octal แต่ต่างกันที่ว่า เลข Octal 1 ตัว แทนด้วยเลข Binary 3 Bit

7. การแปลงเลขฐานสองเป็นฐานแปด และการแปลงเลขฐานแปดเป็นฐานสอง


7. การแปลงเลขฐานสองเป็นฐานแปด และการแปลงเลขฐานแปดเป็นฐานสอง
     ตามที่เราได้ศึกษามาแล้วเกี่ยวกับการแปลงเลขฐานสองเป็นเลขฐานสิบ และการแปลงเลขฐานสิบเป็นเลขฐานแปด ดังนั้น วิธีการแปลงเลขฐานสองเป็นเลขฐานแปดก็สามารถทำได้โดยการแปลงเลขฐานสองให้เป็นเลขฐานสิบเสียก่อน จากนั้นเราก็แปลง เลขฐานสิบที่ได้ให้เป็นเลขฐานแปดอีกครั้งหนึ่ง ก็จะได้คำตอบตามต้องการ ในทำนองเดียวกัน การแปลงเลขฐานแปดให้เป็นเลขฐานสอง เราก็ทำได้ โดยการแปลงเลขฐานแปดให้เป็นเลขฐานสิบ แล้วนำเลขฐานสิบที่ได้แปลงเป็นเลขฐานสองต่อไป แต่วิธีการดังกล่าวดูเหมือนจะ เป็นวิธีที่ยุ่งยาก และเสียเวลาในการทำมาก ยังมีวิธีที่ง่ายกว่านี้ ลองศึกษาดูต่อไป
ความสัมพันธ์ระหว่างเลขฐานแปดกับเลขฐานสอง
เลขฐานแปด (Octal)
เลขฐานสอง (Binary)
0
000
1
001
2
010
3
011
4
100
5
101
6
110
7
111

    จากตารางจะเห็นว่า เลขฐานแปด 1 ตัว สามารถแทนได้ด้วยเลข binary 3 bit ดังนั้น การแปลงเลขฐานสองเป็นเลขฐานแปด หรือการแปลงเลขฐานแปดเป็นเลขฐานสอง ก็ทำได้โดยการแทนค่าต่าง ๆ ตามตาราง
ตัวอย่างที่ 5 จงแปลง (110111010)2 ให้เป็นเลขฐานแปด
วิธีทำ เราต้องแบ่งเลข Binary ออกเป็นชุด ๆ ละ 3 bits โดยนับจากขวามาทางซ้าย ถ้าชุดสุดท้ายมีไม่ถึง 3 bits ก็ให้เติม 0 ลงไป แต่ถ้าเป็นทศนิยม การแบ่งเป็นชุดให้นับจากซ้ายไปขวา เมื่อเป็นชุดแล้วก็ให้แทนค่าเป็นเลขฐานแปดตามตารางที่ 1.2
จาก 110 = 6
      111 = 7
      010 = 2
นั่นคือ (110111010)2 = (110 111 010)2 = (672)8
ตัวอย่างที่ 6 จงแปลง (11101001000.01011)2 ให้เป็นเลขฐานแปด
วิธีทำ
(11101001000.01011)2 = (011 101 001 000.010 11)2 = (3510.26)8
ตัวอย่างที่ 7 จงแปลง (637)8 ให้เป็นเลขฐานสอง
วิธีทำ จาก 6 = 110
              3 = 011
              7 = 111
นั่นคือ (637)8 = (110 011 111)2
ตัวอย่างที่ 8 จงแปลง (524.61)8 ให้เป็นเลขฐานสอง
วิธีทำ จาก 5 = 101
              2 = 010
              4 = 100
              6 = 110
              1 = 001
นั่นคือ (524.61)8 = (101 010 100.110 001)2

6. การแปลงเลขฐานสิบเป็นฐานแปดและฐานสิบหก


6. การแปลงเลขฐานสิบเป็นฐานแปดและฐานสิบหก
    การแปลงเลขฐานสิบที่เป็นเลขจำนวนเต็มให้เป็นเลขฐานแปดและเลขฐานสิบหก มีหลักการง่ายๆ และคล้ายคลึงกัน ซึ่งเราสามารถทำได้โดยการหารเลขฐานสิบที่ต้องการแปลงด้วยฐานของเลขที่ต้องการจะแปลงหลายๆตัว จนหารอีกต่อไปไม่ได้ เช่น
ถ้าต้องการแปลงให้เป็นเลขฐานแปด ก็ให้เอา 8 หาร ถ้าต้องการแปลงให้เป็นเลขฐานสิบหก ก็ให้เอา 16 หาร เศษที่เหลือจากการหารแต่ละครั้งก็คือคำตอบที่ต้องการ โดยเศษที่เหลือจากการหารครั้งแรก เป็นตัวที่มีนัยความสำคัญน้อยที่สุด (Least significant digit หรือ LSD) และเศษที่เหลือจากการหารครั้งสุดท้ายเป็นตัวที่มีนัยความสำคัญสูงที่สุด (Most significant digit หรือ MSD)
ส่วนเลขฐานสิบที่เป็นทศนิยม ถ้าต้องการแปลงให้เป็นเลขฐานอื่นๆ ดังกล่าว ก็สามารถทำได้โดยการคูณจำนวนทศนิยมนั้นด้วยฐานของ เลขที่ต้องการแปลง หลายๆครั้ง เช่น ถ้าต้องการแปลงให้เป็นเลขฐานแปด ก็ให้เอา 8 คูณ ผลลัพธ์จากการคูณที่เป็นเลขจำนวนเต็ม ก็คือคำตอบที่ต้องการ
ตัวอย่าง 3 จงแปลง (124)10 ให้เป็นเลขฐานแปด
oct
ตัวอย่าง 4 จงแปลง (87)10 ให้เป็นเลขฐานสิบหก
hex

5. การแปลงเลขฐานสิบเป็นฐานสอง


5. การแปลงเลขฐานสิบเป็นฐานสอง
    การแปลงเลขฐานสิบเป็นเลขฐานสองก็มีหลายวิธี แต่ที่จะแนะนำคือ การหารด้วย 2 แล้วจดค่าเศษจากการหารไว้ จนกระทั่งหารไม่ได้อีกแล้ว หรือการหารสั้น จากนั้นนำเศษจากการหารแต่ละครั้ง มาไล่ลำดับจากล่างขึ้นไปหาค่าบนสุด ผลลัพธ์ที่ได้จะเท่ากับค่าในเลขฐานสอง
ตัวอย่างที่ 2 (29)10  มีค่าเท่ากับเท่าไรในระบบเลขฐานสอง
decimal
การแปลงเลขหลังทศนิยม (เศษส่วน) ฐานสิบ (Fractional Decimal Numbers) ให้เป็นฐานสอง
การเปลี่ยนเลขหลังทศนิยมฐานสิบ ให้เป็นฐานสอง จะใช้วิธีการนำค่าเลขหลังทศนิยมตั้ง แล้วคูณด้วยสอง จากนั้นนำผลลัพธ์ที่ได้เป็นตัวตั้งในการคูณครั้งต่อไป จนกว่าค่าผลลัพธ์ส่วนที่เป็น เลขหลังทศนิยมเท่ากับ .00 กรณีที่คูณแล้วไม่ลงตัวเท่ากับ .00 ก็ให้คูณจนได้ค่าที่ต้องการ สุดท้ายนำค่าตัวเลขก่อนทศนิยม จากผลลัพธ์แต่ละครั้ง มาเขียนเรียงต่อกัน ก็จะได้ค่าฐานสองที่ต้องการ ดังตัวอย่าง

ตัวอย่าง
 ต้องการแปลงเลข (0.65625)10 เป็นเลขฐานสอง
พิจารณาทีละจุด
นำ 0.65625 คูณด้วย 2 ได้ค่าเท่ากับ 1.31250
  • ค่า 1 (เลขก่อนทศนิยม) จะเป็นค่าหลักแรกของค่าเลขฐานสอง
  • นำ .31250 (เลขหลังทศนิยม) ไปเป็นตัวตั้งในการคูณครั้งถัดไป
นำ 0.31250 คูณด้วย 2 ได้ค่าเท่ากับ 0.62500
  • ค่า 0 (เลขก่อนทศนิยม) จะเป็นค่าหลักที่สองของค่าเลขฐานสอง
  • นำ .62500 (เลขหลังทศนิยม) ไปเป็นตัวตั้งในการคูณครั้งถัดไป
นำ 0.62500 คูณด้วย 2 ได้ค่าเท่ากับ 1.25000
  • ค่า 1 (เลขก่อนทศนิยม) จะเป็นค่าหลักที่สามของค่าเลขฐานสอง
  • นำ .25000 (เลขหลังทศนิยม) ไปเป็นตัวตั้งในการคูณครั้งถัดไป
นำ 0.25000 คูณด้วย 2 ได้ค่าเท่ากับ 0.50000
  • ค่า 0 (เลขก่อนทศนิยม) จะเป็นค่าหลักที่สี่ของค่าเลขฐานสอง
  • นำ .50000 (เลขหลังทศนิยม) ไปเป็นตัวตั้งในการคูณครั้งถัดไป
นำ 0.5000 คูณด้วย 2 ได้ค่าเท่ากับ 1.00000
  • ค่า 1 (เลขก่อนทศนิยม) จะเป็นค่าหลักที่ห้าของค่าเลขฐานสอง
  • เนื่องจากเลขหลังทศนิยมเท่ากับ .00000 จึงไม่ต้องคูณต่อ
นำเลขก่อนทศนิยมของการคูณแต่ละครั้ง มาเขียนเรียงกัน จะได้ค่าเท่ากับ 10101
ดังนั้นเลขทศนิยมฐานสิบ 0.65625 จะเท่ากับ 0.10101 ในฐานสอง

4. การแปลงเลขฐานสองเป็นเลขฐานสิบ

4. การแปลงเลขฐานสองเป็นเลขฐานสิบ
    การแปลงเลขฐานสองเป็นเลขฐานสิบ มีหลายวิธี แต่ที่จะแนะนำคือ การกระจายค่าประจำหลัก จากนั้นนำมาบวกรวมกันอีกครั้ง ผลลัพธ์ที่ได้จะเท่ากับค่าในเลขฐานสิบ
ตัวอย่างที่1  (110111)2 มีค่าเท่ากับเท่าไรในระบบเลขฐานสิบ
วิธีทำ
N = (1 x 25) + (1 x 24) + (0 x 23) + (1 x 22) + (1 x 21) + (1 x 20)
   = 32 + 16 + 0 +4 + 2 + 1
1101112 = 5510
การแปลงเลขฐานสอง เป็นเลขฐานสิบ วิธีที่สอง คือ Dibble Dobble Method โดยการนำเอาเลขหลักซ้ายสุด มาวางไว้ แล้วคูณด้วย 2 จากนั้นบวกด้วยเลขบิทที่อยู่ ทางขวามือ จากนั้นนำผลลัพธ์ มาคูณด้วย 2 บอกด้วยเลขบิทต่อไป ดังนี้
เช่น ต้องการแปลง (110111)2 เป็นเลขฐานสิบ
บิทซ้ายสุด คือ 1
คูณด้วย 2 และบวกบิทถัดไป (2 x 1) + 1 = 3
คูณด้วย 2 และบวกบิทถัดไป (2 x 3) + 0 = 6
คูณด้วย 2 และบวกบิทถัดไป (2 x 6) + 1 = 13
คูณด้วย 2 และบวกบิทถัดไป (2 x 13) + 1 = 27
คูณด้วย 2 และบวกบิทถัดไป (2 x 27) + 1 = 55
ดังนั้น 1101112 = 5510

3. ระบบเลขฐานสอง


3. ระบบเลขฐานสอง
    ระบบเลขฐานสอง มีสัญลักษณ์ที่ใช้เพียงสองตัว คือ 0 และ 1 ถ้าเปรียบเทียบเลขฐานสอง กับเลขฐานสิบแล้ว ค่าของหลักที่ถัดจากหลักที่น้อยที่สุด (LSD) ขึ้นไป จะมีค่าเท่ากับ ฐานสองยกกำลังหมายเลขหลัก แทนที่จะเป็น 10 ยกกำลัง ดังนี้
เลขฐานสิบเลขฐานสอง
1001หน่วย201หนึ่ง
10110สิบ212สอง
102100ร้อย224สี่
1031000พัน238แปด
10410000หมื่น2416สิบหก
105100000แสน2532สามสิยสอง
ระบบเลขฐานสองเกิดจากการใช้ตัวเลขเพียง 2 ตัว คือ 0 และ 1 ดังนั้น สมการคือ
N = dnRn + ... + d3R3 + d2R2 + D1R1 + D0R0
เมื่อ d คือค่า 0 หรือ 1
เช่น 1101 = (1 x 23) + (1 x 22) + (0 x 21) + (1 x 20)
เพื่อตัดปัญหายุ่งยาก ในการแทนค่าของเลขระบบต่างๆ เรานิยมเขียน ตัวเลขอยู่ในวงเล็บ และเขียนค่าของฐานนั้น อยู่นอกวงเล็บ
เช่น (101101)2 = (45)10
สำหรับเศษส่วน จะเขียนค่าของเศษส่วนอยู่หลังจุด (Binary Point) ยกกำลังเป็นลบ เพิ่มขึ้นตามลำดับ ดังตัวอย่าง
(0.1011)2 = (1 x 2-1) + (0 x 2-2) + (1 x 2-3) + (1 x 2-4)