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