קוד גריי

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

קוד גריי הוא שיטה לקידוד מספרים באופן בינארי שבה כל מספר-עוקב שונה מקודמו בספרה בינארית אחת. קוד גריי הוא קוד מראה שנהגה על ידי פרנק גריי במעבדות בל בשנת 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 לקוד גריי נתחיל משמאל. את הספרה הראשונה משמאל נעתיק. עכשיו נביט בספרה הסמוכה לה - אם זו סיפרה זהה נרשום מימין ל־1 שהעתקנו 0, אם היא שונה נרשום 1 (פעולת XOR בין שני משתנים).

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

תחילה נעתיק את הראשונה 1
יש שוני בין שתי הספרות - 1,0 ולכן נרשום 1 11
אין שוני בין שתי הספרות - 0,0 ולכן נרשום 0 110
יש שוני בין שתי הספרות - 0,1 ולכן נרשום 1 1101
אין שוני בין שתי הספרות - 1,1 ולכן נרשום 0 11010
יש שוני בין שתי הספרות-1,0 ולכן נרשום 1 110101

על מנת לבצע את הפעולה ההפוכה (להפוך מיצוג של קוד גריי למספר בבסיס 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 במספר הבינארי.

(Bi=Gi XOR B(i+1

שימושים[עריכת קוד מקור | עריכה]

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

קישורים חיצוניים[עריכת קוד מקור | עריכה]