The Pilkas kodas yra dvejetainių skaičių sistemų seka, kuri taip pat žinoma kaip atspindėtas dvejetainis kodas . Priežastis, kodėl šis kodas vadinamas atspindėtu dvejetainiu kodu, yra pirmosios N/2 reikšmės, palyginti su paskutinėmis N/2 reikšmėmis atvirkštine tvarka. Šiame kode dvi iš eilės einančios reikšmės skiriasi vienu dvejetainių skaitmenų bitu. Pilki kodai naudojami bendroje aparatinės įrangos generuojamų dvejetainių skaičių sekoje. Šie skaičiai sukelia neaiškumų arba klaidų, kai atliekamas perėjimas nuo vieno skaičiaus prie eilės. Šis kodas tiesiog išsprendžia šią problemą pakeisdamas tik vieną bitą, kai atliekamas perėjimas tarp skaičių.
Pilkas kodas yra labai lengvas svertinis kodas, nes jis nepriklauso nuo pozicijoje nurodyto skaitmens reikšmės. Šis kodas taip pat vadinamas cikliniu kintamojo kodu, nes vienos reikšmės perėjimas į nuoseklią vertę keičia tik vieną bitą.
Kaip sugeneruoti pilką kodą?
Priešdėlis ir atspindėjimo metodas naudojami rekursyviai generuojant pilkąjį numerio kodą. Norėdami generuoti pilką kodą:
- Randame bitų skaičių, reikalingą skaičiui pavaizduoti.
- Toliau randame kodą 0, ty 0000, kuris yra toks pat kaip dvejetainis.
- Dabar paimame ankstesnį kodą, ty 0000, ir pakeičiame reikšmingiausią jo bitą.
- Šį procesą atliekame atskirai, kol visi kodai nėra unikaliai identifikuoti.
- Jei pakeisdami reikšmingiausią bitą rasime tą patį kodą, gautą anksčiau, tada bus pakeistas antrasis pagal reikšmingumą bitas ir pan.
Pilkojo kodo generavimo procesas
Pilkos spalvos kodų lentelė
Dešimtainis skaičius | Dvejetainis skaičius | Pilkas kodas |
---|---|---|
0 | 0000 | 0000 |
1 | 0001 | 0001 |
2 | 0010 | 0011 |
3 | 0011 | 0010 |
4 | 0100 | 0110 |
5 | 0101 | 0111 |
6 | 0110 | 0101 |
7 | 0111 | 0100 |
8 | 1000 | 1100 |
9 | 1001 | 1101 |
10 | 1010 m | 1111 |
vienuolika | 1011 m | 1110 |
12 | 1100 | 1010 m |
13 | 1101 | 1011 m |
14 | 1110 | 1001 |
penkiolika | 1111 | 1000 |