در مورد grey code و bcd

در این مطلب به خلاصه‌ای از 2 نوع کدگذاری متفاوت از باینری می‌پردازیم که در مدار‌های منطقی و کامپیوتر کاربرد دارد.

کد ‌grey

یک سیستم نگه داری اعداد به صورت ۲دویی است که با مبنای ۲ تفاوت دارد.

تفاوت اصلی که وجود دارد این است که این سیستم به گونه ای پیاده‌سازی شده که نمایش هر عدد با نمایش عدد قبلی و بعدی خود تنها در یک بیت تفاوت داشته باشه بنابر این امکان تصحیح خطا تا حدودی به وجود می آید

و اما چگونه می توان باینری را به gray code تبدیل کرد ؟

روش ۱ :‌جدول هایی برای اینکار وجود داره که آوردنش اینجا بیهوده است، با یک سرچ سریع به آن‌ها دست‌ خواهید یافت.

روش ۲: برای نوشتن ۱ تا n به صورت gray می توان اینگونه عمل کرد :

رقم اول از این دنباله :‌ 0110 0110 0110 0110 0110

رقم دوم از این دنباله : 00 11 11 00 00 11 11 00 00 11 11 00 00 11 11 00 00 11 11

رقم سوم از این دنباله :‌ 0000 1111 0000 1111 0000 1111

در واقع دنباله از ای 0 و 1 متناوب که برای هر رقم دوره تناوب افزایش می یابد!

و اما روش ساده(روش ۳) :

از رقم سمت چپ باینری شروع می کنیم :

رقم اول را به همون شکل جاگذاری می کنم

از برای رقم n ام : رقم n ام و n-1 از باینری را مقایسه می کنیم :

اگر مشابه بودند 0 و اگر متفاوت بودند، 1 قرار می دهیم.




کد BCD

یک نمایش اعداد مبنای 10(تاکید می کنم مبنای 10) با 0 و 1 است

در این سیستم هر ۴ رقم 0و1 نمایانگر بک رقم در مبنای 2 هستند، توجه داریم که در حالت ایده آل، با ۴ رقم 0 و 1 می توان 0 تا۱۵ را نمایش داد ولی ما از تمام ظرفیت استفاده نمی کنیم، در واقع بزرگترین عددی که هر 4 رقم نمایش می دهد، 9 است. (1001)

همان طور که معلوم است این روش در مصرف مموری بهینه نیست و از تمام ظرفیت 0 و1 ها اسفاده نمی‌کند(در واقع 10 تا 15) ولی با توجه به سادگی تبدیل به مبنای10، کاربرد هایی نظیر محاسبات دقیق اعداد اعشاری برای کاربرد در ماشین‌حساب‌ها را دارد

برای تبدیل اعداد BCD به دهدهی و برعکس مشابه مبنای 16 عمل کرده و هر رقم را به 4 رقم 0 و 1 متناظر می کنیم.

مثال:
1001 1001 1001 1001 = 9 9 9 9

1000 0110 0111 0101 = 8 6 7 5

9999 + 867+ = 18674 = 0001 1000 0110 0111 0100