> bcd | عشري | ثنائي <
// BCD - ترميز عشري ثنائي لحساب عشري دقيق
دقة عشرية
يحافظ على الدقة العشرية ويتجنب أخطاء التقريب في النظام الثنائي.
ترميز على مستوى نيبّل
يُرمَّز كل رقم عشري في 4 بتات بالضبط (نيبّل واحد).
صيغ متعددة
يدعم صيغ 8421 و2421 و5421 وExcess-3 وGray BCD.
>> معلومات تقنية
كيف يعمل BCD:
يرمز BCD كل رقم عشري (0–9) إلى 4 بتات ثنائية. تستخدم صيغ BCD المختلفة أوزاناً مختلفة للبتات: 8421 (قياسي)، 2421 (ذاتي المتمم)، 5421 (ثنائي خماسي)، Excess-3 (إضافة 3 إلى كل رقم) وGray BCD (تقليل تغيّر البتات قدر الإمكان). يخزن BCD المضغوط رقمين عشريين في كل بايت لزيادة الكفاءة.
مثال على صيغ BCD:
عشري: 9 5 3
8421 BCD: 1001 0101 0011
2421 BCD: 1111 1011 0011
5421 BCD: 1100 1000 0011
Excess-3: 1100 1000 0110
Gray BCD: 1101 0111 0010
BCD مضغوط: 10010101 00110000
(95) (30)
لماذا نستخدم BCD:
- >العمليات المالية التي تحتاج إلى تمثيل عشري دقيق
- >الشاشات الرقمية ودوائر محوّل سبعة قطاعات
- >دوائر الساعة في الزمن الحقيقي
- >الآلات الحاسبة وشرائح الحوسبة
- >أنظمة التحكم الصناعية ووحدات PLC
>> الأسئلة الشائعة
ما هو BCD؟
BCD (Binary-Coded Decimal) هو أسلوب ترميز للأعداد العشرية حيث يُمثَّل كل رقم عشري بواسطة مكافئه الثنائي المكوّن من 4 بتات. يُستخدم عندما تكون الدقة العشرية مهمة.
لماذا نستخدم BCD بدلاً من الثنائي؟
يساعد BCD على تجنب أخطاء التقريب في الحسابات العشرية ويسهّل تحويل القيم مباشرة إلى عروض عشرية على الشاشات. وهو مثالي للتطبيقات المالية التي تتطلب تمثيلاً عشرياً دقيقاً.
ما هو BCD المضغوط؟
يخزن BCD المضغوط رقمين عشريين في بايت واحد (8 بتات)، حيث يمثّل كل نيبّل رقماً واحداً. وهو أكثر كفاءة في استخدام المساحة مقارنةً بـ BCD غير المضغوط الذي يستخدم بايتاً كاملاً لكل رقم.
ما هي صيغ BCD المختلفة؟
تشمل صيغ BCD الشائعة: 8421 (مرجّح قياسي)، 2421 (ذاتي المتمم)، 5421 (ثنائي خماسي)، Excess-3 (إضافة 3 لكل رقم) وGray BCD (تقليل تغيّر البتات بين القيم المتتابعة).
// مرجع سريع
| Dec | 8421 | 2421 | Excess-3 |
|---|---|---|---|
| 0 | 0000 | 0000 | 0011 |
| 1 | 0001 | 0001 | 0100 |
| 2 | 0010 | 0010 | 0101 |
| 3 | 0011 | 0011 | 0110 |
| 4 | 0100 | 0100 | 0111 |
| 5 | 0101 | 1011 | 1000 |
| 6 | 0110 | 1100 | 1001 |
| 7 | 0111 | 1101 | 1010 |
| 8 | 1000 | 1110 | 1011 |
| 9 | 1001 | 1111 | 1100 |
// أمثلة برمجية
Decimal 25 BCD 0010 0101 (packed: 0x25)
Binary 0001 1001 (0x19)
Decimal 1234 BCD 0001 0010 0011 0100 (2 bytes, packed)
Overhead 4 bits per digit vs log2(10) = 3.32 bits -> ~20% larger
Add 0x19 + 0x28 = 0x41 -> +6 correction per nibble > 9 -> 0x47
>> المزيد من الأسئلة
س: ما هو BCD وبماذا يختلف عن الثنائي؟
ج: في BCD يُرمَّز كل رقم عشري على حدة بـ4 بتات. يصبح 25 هو 0010 0101 بينما الثنائي الصرف 11001. تبقى القيم العشرية دقيقة وسهلة العرض.
س: ما BCD المعبّأ وغير المعبّأ؟
ج: يخزّن BCD المعبّأ رقمين في كل بايت (0x25 = 25). أما غير المعبّأ فيستخدم بايتاً لكل رقم ويكون النصف الأعلى 0 أو مؤشر منطقة كما في EBCDIC.
س: لماذا لا يزال BCD مستخدماً؟
ج: للحساب العشري الدقيق دون أخطاء تقريب: الأنظمة المالية والآلات الحاسبة وساعات الوقت الحقيقي وشاشات 7 قطع. الثمن 4 بتات للرقم بدل 3.32 أي نحو 20% مساحة إضافية.