العمليات الحسابية في نظام ال BCD
هذه المقالة يتيمة حيث أن عددًا قليلاً من المقالات أو لا مقالات إطلاقًا تصل إليها. ساعد من فضلك بإضافة وصلات في المقالات ذات العلاقة. |
هذا المقال أو المقطع ينقصه الاستشهاد بمصادر. الرجاء تحسين المقال بوضع مصادر مناسبة. أي معلومات غير موثقة يمكن التشكيك بها وإزالتها. وسم هذا القالب منذ: ديسمبر 2007 |
العمليات الحسابية في نظام الـ BCD الشيفرات العددية Numrical Codes عندما نستخدم النظام العددي الثنائي للتعبير عن القيم العددية تظهر في هذا النظام نقطتا ضعف الأولى هي ضرورة استخدام عدد من الأرقام أكثر من ثلاثة أضعاف الأرقام المستخدمة في النظام العشري وللتغلب على هذه المشكلة نلجأ عادة إلى استخدام النظام العددي الثماني أو الست عشري نقطة الضعف الثانية هي عدم سهولة عمليات التحويل الأعداد العشرية إلى ثنائية وبالعكس وللتغلب على هذه السيئة نلجأ إلى كثير من الأحيان إلى استخدام ما يسمى بنظام التشفير الثنائي عشري (BCD ) نظام التشفير الثنائي العشري Binary Coded Decimal يستخدم في النظام BCD أربعة أرقام ثنائية لتمثيل كل رقم عشري كما هو مبين في الجدول وحينما يراد تمثيل عدد مكون من أكثر من رقم عشري يستخدم لكل رقم عشري مجموعة ثنائية ( A BCD ) منفصلة كما هو مبين في الشكل:
حيث مثل العدد العشري ( 5706 ) باستخدام الشيفرة BCD .
من مساوئ الشيفرة BCD استخدام عشرة تركيبات فقط من التركيبات الممكن تشكليها من أربعة أرقام ثنائية وصعوبة إجراء العمليات الحسابية على الأعداد الممثلة بشيفرة BCD .
جمع الأعداد العشرية المشفرة ثنائياً (BCD Addition ) يتم في نظام الـ (BCD ) تجميع الأعداد الثنائية في مجموعات مؤلفة من أربعة خانات وتسمى كل مجموعة بـ ( Nibble ) وتمثل رقماً عشرياً من مساوئ هذا النظام استخدامه لعشرة فقط من التركيبات الستة عشر الممكن تشكيلها من ( 4 )
خانات من ناحية أخرى يتصف هذا النظام بميزة تعتبر في بعض الأحيان هامة جداً، فإذا أخذنا مثلاً عملية تحويل عدد ثنائي إلى مكافئه العشري نرى حينما يكون العدد ممثلاً بشكله الثنائي البسيط أنه يحتاج إلى عملية حسابية تتطلب من أجل تحديد كل رقم عشري أخذ كل رقم ثنائي بعين الاعتبار وفي عملية التحويل العكسية يعتمد تحديد كل رقم ثنائي بشكل عام على كل رقم عشري نتيجة لذلك تزداد الدارات اللازمة لتنفيذ عملية التحويل هذه بشكل أسي مع عدد الأرقام ، أما في حالة الـ BCD فيعتمد كل رقم عشري على أربعة أرقام ثنائية مما يؤدي إلى مضاعفة الدارات اللازمة لتحقيق عملية التحويل هذه بتضاعف عدد الأرقام فقط ، لنفترض الآن أننا بحاجة إلى تقديم معطيات عددية إلى معالج رقمي بشكلها العشري المشفر ( BCD ) وبعد المعالجة نريد الحصول على النتائج بشكل عشري أيضاً ، فهل من المفضل تحويل هذه المعطيات إلى الشكل الثنائي قبل المعالجة ومن ثم إرجاعها إلى الشكل العشري للإجابة على هذا السؤال يجب أولاً تحديد أي من هاتين العمليتين يستغرق وقتاً أطول فإذا كانت عملية المعالجة معقدة وتحتاج إلى وقت أطول من الوقت اللازم لعملية التحويل من ثنائي إلى عشري فيفضل عندها إجراء عملية التحويل ، أما إذا كانت عملية المعالجة بسيطة فمن المفضل تجنب عملية التحويل هذه ومعالجة المعطيات بشكلها المشفر ( BCD ) لذلك سنستعرض الآن طريقة جمع الأعداد العشرية المشفرة ثنائياً ( BCD ) ولنأخذ الأمثلة المبينة في الشكل ( 26-5 ) حيث تم جمع أرقام عشرية مختلفة ( كل رقمين على حده ) نلاحظ من الشكل أن عملية الجمع BCD بسيطة وتعطي النتيجة الصحيحة مباشرة إذا كان مجموع الرقمين أقل من العشرة أما إذا كان مجموعهما أكبر من الـ9 كما هو مبين في الشكل فإن النتيجة التي نحصل عليها غير مقبولة لأن النظام ( BCD ) لا يسمح بالقيم من 10 وحتى 15 ضمن Nibble ، وإذا كان مكون من 8 bit فيتم التصحيح إذا كان ناتج الـ Nibble السفلي أكبر من 9 .
نلاحظ أيضاً أن إضافة الرقم 6 إلى النتيجة الغير مقبولة يؤدي إلى توليد منقول في المرتبة الأعلى والحصول على الجواب الصحيح كما هو مبين في الشكل ( 5-26)
إن ظهور المنقول نتيجة لعملية جمع الأعداد الثنائية وقبل إضافة الـ 6 دليل آخر على عدم صحة نتيجة الجمع في النظام BCD لذلك لا بد في هذه الحالة أيضاً من إضافة الـ 6 كما هو مبين في الشكل ( 26- 5 ) تتضح الآن ومن الأمثلة السابقة الطريقة الممكن استخدامها لإضافة عددين BCD وهي : 1- إضافة العددين وكأنهما عددين ثنائيين عاديين . 2- إذا كان الناتج عدداً غير BCD أي ليس محصوراً ما بين الصفر والتسعة أضف إلى الناتج 6 في حال جمع 8 bit إلى 8 bit فإنه يتم التصحيح في حال كان الـ Nibble السفلي أكبر من 9 لأن نظام الـ BCD لا ينتج بالقيم من 15 وحتى 15 . بالاستفادة من هذه الطريقة يتم إنتاج دارات رقمية لجمع الأعداد العشرية المشفرة ثنائياً ( BCD ) ويظهر الشكل ( 5-27 ) مرحلة من مراحل الجامع للأعداد ( BCD ) وكما هو مبين في الشكل تتكون المرحلة من أربعة جوامع كاملة لجمع
الخانات ( A1 B1 C1 D1 ) مع الخانات (A2 B2 C2 D2 ) ومن بوابتي AND تستخدمان لاكتشاف أن الناتج محصور ما بين الـ 10 – 15 يصبح مخرج أحد البوابتين أو كلاهما عند المستوى المنطقي 1 وتحتوي المرحلة أيضاً على بوابة OR يصبح مخرجها عند المستوى 1 في حال كون الناتج محصوراً ما بين
الـ 10 و 15 أو في حال تولد منقول وعلى نصف جامع وجامع كامل وبوابة EX – OR ( الموجودة في أسفل الشكل ) لإضافة الرقم 6 إلى الناتج عندما يكون مخرج بوابة OR عند المستوى المنطقي 1 .
طرح الأعداد العشرية المشفرة ثنائياً ( BCD Subsection ) يتم في هذه الحالة بأخذ المتمم الثنائي للمطروح منه ثم ذلك بإتباع ما يلي : 1- تحويل هذا العدد إلى النظام الثنائي وذلك بتمثيل كل رقم عشري إلى خانات ثنائية : 2- قلب الأصفار واحدات والواحدات أصفار ( أي تتمية أحادياً ) 3- إضافة 1 إلى العدد المتمم أحادياً فنحصل على المتمم له وبعد أن حصلنا على المتمم الثنائي له نجمعه مع المطروح وكذلك الأمر فتكون التتمية الصحيحة مباشرة إذا كان مجموع الرقمين أقل من العشرة أما إذا كان مجموعهما أكبر من الـ 9 في حال كان كل عدد عبارة عن Nibble ( 4bit ) فالنتيجة التي نحصل عليها غير مقبولة لأن نظام الـ BCD لا يسمح بالقيم من ( 10 ) حتى ( 15 ) ضمن الـ (Nibble) لذا أطرح الرقم 6 من النتيجة غير المقبولة وفي حال ظهور منقول ( حمل ) نتيجة لعملية طرح الأعداد الثنائية دليل آخر على عدم صحة نتيجة الجمع في النظام BCD لذا لا بد في هذه الحالة من طرح 6 لتصحيح الناتج . وفي حال كان العدد عبارة عن 8 bit فيتم تصحيح الناتج إذا كان Nibble السفلي من الناتج أكبر من 9 كما في مثالنا : 0 1 1 0 0 0 0 1 86
- 1 1 1 0 0 0 0 0 - 07 0 1 1 0 0 0 0 1 79 + 0 0 0 1 1 1 1 1
0 1 1 1 1 1 1 0 1
+ 1
F7 = 1 1 1 1 1 1 1 0 1
- 0 1 1 0
1 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1
79 = 1 0 0 1 1 1 1 0 0
اتضح لنا من خلال المثال أنه تم تصحيح الناتج وذلك لأن Nibble السفلي هو F وهو أكبر من 9 لذا تم طرح 6 من الناتج وبذلك نكون قد حصلنا على الجواب الصحيح .