grey code چیست و چه تفاوتی با bcd و باینری دارد؟ در ادامه همراه ما باشید!

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

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

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

روش ۱ :‌جدول هایی برای اینکار وجود داره که آوردنش اینجا تکرار مکررات است

روش 2 :

برای نوشتن ۱ تا 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:

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

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

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


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


برای محسابه جمع داده شده، احتمالا راحت ترین کار تبدیل به مینای 10 باشد :

مثال:

1001 1001 1001 1001 = 9 9 9 9

1000 0110 0111 0101 = 8 6 7 5

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