เลขฐานสิบเข้ารหัสฐานสอง

จากวิกิพีเดีย สารานุกรมเสรี

ตารางการเปรียบเทียบระหว่างเลขฐานสิบกับบีซีดี
ตารางการเปรียบเทียบระหว่างเลขฐานสิบกับบีซีดี

เลขฐานสิบเข้ารหัสฐานสอง หรือ บีซีดี (Binary-coded decimal : BCD) เป็นระบบเลขที่ใช้เลขฐานสองจำนวนอย่างน้อย 4 บิตแทนเลขฐานสิบ 0 ถึง 9 ในแต่ละหลัก เพื่อความสะดวกในการแสดงผลจากการคำนวณด้วยคอมพิวเตอร์หรืออุปกรณ์อิเล็กทรอนิกส์ ตัวอย่าง เลขฐานสิบ 127 จะสามารถแปลงเป็นบีซีดีได้เป็น

0001 0010 0111

[แก้] ประเภทของบีซีดี

ระบบเลข BCD ( Binary – Coded – Decimal System) เป็นระบบเลขที่ใช้เลขฐานสองจำนวน 4 Bit แทนเลขฐานสิบ โดยเลขฐานสอง 4 Bit นี้จะแทนค่าตั้งแต่ 0 – 9 การแปลงระหว่างเลขฐานสิบกับเลข BCD สามารถทำได้โดยการจัดกลุ่มของเลขฐานสอง จำนวน 4 Bit ตัวเลข BCD นี้บางครั้งจะเรียกว่า รหัส 8421 การใช้ตัวเลข BCD แทนค่าเลขฐานสิบแต่ละหลัก จะมีความสะดวกมาก ทำให้คอมพิวเตอร์รุ่นแรก ๆ เป็นคอมพิวเตอร์ที่ประมวลผลแบบ 4 Bit ต่อมามีการพัฒนาเป็นคอมพิวเตอร์แบบ 8 Bit เพราะเวิร์ดข้อมูลขนาด 8 Bit สามารถแทนเลข BCD ได้สองหลัก

คอมพิวเตอร์ในปัจจุบันได้กำหนดหน่วยของความจุไว้ว่า 1 ไบต์เท่ากับ 8 บิต นั่นหมายความว่าเราสามารถเก็บบีซีดีได้ 1-2 หลักต่อ 1 ไบต์ ถ้าเก็บ 2 หลักจะเรียกว่า "packed BCD" และถ้าเก็บหลักเดียวเรียกว่า "unpacked BCD" ซึ่งสามารถดึงค่าออกมาคำนวณง่ายกว่า ตัวอย่างเช่น เลขฐานสิบ 2653 เมื่อแปลงเป็นรูปแบบ packed จะได้เป็น 0010 0110 0101 0011 (ใช้หลักละ 4 บิต) ในขณะที่รูปแบบ unpacked จะเป็น 00000010 00000110 00000101 00000011 (เติม 0 ในบิตที่เหลือจนครบ 8 บิต)

[แก้] การบวกและการลบบีซีดี

การบวกและการลบบีซีดี สามารถกระทำได้เหมือนการบวกและการลบเลขฐานสอง แต่จะแตกต่างกันเล็กน้อยตรงที่เมื่อผลลัพธ์นั้นมีการทดไปหลักอื่น หรือบีซีดีมีค่ามากกว่า 9 ในหลักใดๆ จะต้องมีการปรับบีซีดีใหม่ให้ทุกหลักมีค่าเป็น 0-9 ดังเดิม

ตัวอย่าง หากต้องการหาผลลัพธ์ของ 237 + 282 ในรูปแบบบีซีดี สามารถกระทำได้ดังนี้

  237 =  0010  0011  0111
  282 =  0010  1000  0010 +
ผลบวก =  0100  1011  1001

จะเห็นว่าหลักสิบเป็น "1011" = 11 ซึ่งมีค่าเกิน 9 วิธีการปรับบีซีดีคือนำ 2's complement ของ 10 ไปบวกเข้ากับหลักนั้น (เปรียบเหมือนการลบด้วย 10) ซึ่งนั่นก็คือ "0110" แล้วนำบิตที่เกินไปบวกเพิ่มในหลักถัดไป

  เดิม =  0100  1011  1001
  ปรับ =        0110       +
ผลบวก =  0100 10001  1001
คำตอบ =  0101  0001  1001

เราจะได้ว่า 237 + 282 = 519

สำหรับการลบเลขบีซีดีนั้นให้ทำเหมือนการบวก แต่ต้องเปลี่ยนตัวลบให้อยู่ในรูปแบบ 2's complement ทุกหลักเสียก่อน แล้วจึงบวกไปตามปกติ

[แก้] ดูเพิ่ม