เลขฐานสิบเข้ารหัสฐานสอง
จากวิกิพีเดีย สารานุกรมเสรี
เลขฐานสิบเข้ารหัสฐานสอง หรือ บีซีดี (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 ทุกหลักเสียก่อน แล้วจึงบวกไปตามปกติ