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

จากวิกิพีเดีย สารานุกรมเสรี
เว็บย่อ:
BCD
ตารางการเปรียบเทียบระหว่างเลขฐานสิบกับบีซีดี

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

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

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

คอมพิวเตอร์ในปัจจุบันได้กำหนดหน่วยของความจุไว้ว่า 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 (Invert ของ 9)แล้วนำบิตที่เกินไปบวกเพิ่มในหลักถัดไป

ผลบวก = 0100 1011 1001
ปรับบีซีดี = 0000 0110 0000 +
0100 10001 1001
ผลลัพธ์ = 0101 0001 1001

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

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

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