קוד גריי

קוד גריי הוא שיטה לקידוד מספרים באופן בינארי שבה כל מספר-עוקב שונה מקודמו בספרה בינארית אחת. קוד גריי הוא קוד מראה שנהגה על ידי פרנק גריי במעבדות בל בשנת 1947 כדי למנוע פלט שגוי ממתגים אלקטרומכניים. היום שימושו העיקרי של קוד גריי הוא בתיקוני טעויות בתקשורת ספרתית כגון טלוויזיה בכבלים.

דוגמה
עשרוני גריי
0    ----  000
1   ----    001
2 ----     011
3 ----     010
4 ----      110
5 ----     111
6    ----  101
7 ----     100

כפי שניתן לראות, הקוד של 2 ו־3 הוא היפוך הסדר של הקוד של 0 ו־1, בהוספת הסיבית 1 משמאל. באותו אופן, הקוד של 4 עד 7 הוא היפוך הקוד של 0 עד 3, בהוספת 1 משמאל (והצבת אפסים בספרות החסרות). באופן זה, ניתן להמשיך ולבנות את הקוד. הקוד עבור 8 יהיה 1100, והקוד עבור 15 יהיה 1000.

המרה בין קוד גריי ובסיס 2
על מנת להפוך מספר בבסיס 2 לקוד גריי נתחיל משמאל. את הספרה הראשונה משמאל נעתיק. עכשיו נביט בספרה הסמוכה לה - אם זו סיפרה זהה נרשום מימין לסיפרה שהעתקנו 0, אם היא שונה נרשום 1 (פעולת XOR בין שני משתנים).

לדוגמה, נמצא את הייצוג של המספר 100110 בקוד גריי:

על מנת לבצע את הפעולה ההפוכה (להפוך מיצוג של קוד גריי למספר בבסיס 2) צריך להתחיל מהספרה הימנית ביותר ולספור את מספר האחדות הנמצאים משמאלה. אם יש מספר זוגי של אחדות מעתיקים את הספרה, ואם יש מספר אי זוגי הופכים. לדוגמה נקח את המספר 110 (4) ונסתכל מהספרה הימנית. נראה שיש מספר זוגי (2) של אחדות ולכן נעתיק 0. נמשיך לספרה הבאה ונראה שמשמאלה יש רק ספרת 1 בודדה ולכן נהפוך אותה ל-0. את הספרה האחרונה פשוט מעתיקים לכן יצא לנו 100 שזהו 4 בבסיס 2.

שיטה נוספת להמרה מגריי לבינארי רגיל: מתחילים מהספרה השמאלית. הספרה המקבילה במספר הבינארי היא הספרה הנוכחית בקוד גריי XOR הספרה הקודמת בקוד הבינארי (עבור האיטרציה הראשונה אפשר להוסיף 0 משמאל למספר הבינארי). עבור אותו מספר: 110, נוסיף 0 אחד משמאל: ???0. XOR של 1 ו-0 זה 1- הספרה השמאלית במספר הבינארי, כך שבינתיים יש לנו ??01. עוברים לספרה הבאה מימין: XOR של 1 ו-1 זה 0, ונקבל ?010. עוברים עוד ספרה: XOR של 0 ו-0 זה 0. קיבלנו 0100 שזה 4 דצימאלי כמו בשיטה הקודמת.

אפשר לייצג את זה בנוסחה: Gi  זו הספרה ה-i בקוד גריי, ו-Bi  זו הספרה ה-i במספר הבינארי.

שימושים 

אחד היתרונות של קוד גריי הוא בתיקון שגיאות בתקשורת נתונים. מכיוון שכל ספרה נבדלת מקודמתה (ולכן גם מהעוקבת לה) בסיבית אחת בלבד, קל לזהות שיבוש בקידוד. תכונה זו של הקוד גם מאפשרת להשתמש בו במפת קרנו (טכניקה ליצירת מעגל סיפרתי המממש פונקציה לוגית). לעיתים משתמשים גם בקוד גריי באלגוריתמים גנטיים (כדי שמוטציות ישנו רק במעט את התכונה של היצור). יכולים גם להשתמש בקוד לצורך פתירת משחק מגדלי האנוי.

קישורים חיצוניים

 
 ממיר מקוד גריי למספר בינארי 
 ממיר ממספר בינארי לקוד גריי 
 עידו גנדל, האנטומיה של הקוד של גריי, באתר נענע10, 16 במאי 2010
 

קומבינטוריקה
גריי
שיטות ספירה