כמתכנתים, לעתים נאלץ לבצע פעולת המרה מהקסדצימלי לבינארי או ההיפך, במאמר זה נציג שיטות פשוטות ונוחות לביצוע המרות אלו.
ספירה על בסיס הקסדצימלי היא למעשה ספירה על בסיס 16, כאשר בבסיס זה יש 16 ספרות:
הספרות מ-0 עד 9 מיוצגות לפי בסיס עשרוני (0 נשאר 0, 5 נשאר 5 ,וכן הלאה),
ואת 6 הספרות הבאות מסמנים באותיות מ-A אשר מייצגת 10 בבסיס עשרוני, עד F אשר מייצגת 15 בבסיס עשרוני.
שפות תכנות רבות מאפשרות כתיבה של קבועים הקסדצימליים, שמייצגים לא רק ספרות אלא גם תווים (ASCII למשל).
בסיס בינארי
ספירה על בסיס בינארי היא ספירה על בסיס 2, כלומר שהערכים היחידים שקיימים בה הם 0 ו-1,
כתוצאה מצירוף של 0 ו-1 נוכל להרכיב צירופים שונים בעלי 8 תווים אשר כל אחד מהם מייצג אות או מספר בשפת בני האדם.
כאשר אנו עוסקים בהמרות של מספרים בעלי בסיס עשרוני לבינארי, עלינו להיעזר בסרגל בינארי.
הסרגל הבינארי מתחיל מ-1 ומתקדם בהכפלה (X*2), כלומר: 1-2-4-8-16-32-64-128-256-512-1024 וכו'
כאשר נבין כיצד מתבצעת המרה כזו (בהמשך המאמר), נבין גם מדוע אנו יכולים להסתפק בסרגל קצר (1-2-4-8 למשל) להמרת ערכים נמוכים יותר –
ההיגיון הוא שהערך הכי גבוה בסרגל יהיה נמוך מהערך שאנו הולכים להמיר,
כלומר שאם אנו הולכים להמיר את המספר 15, אז מקסימום 8 טוב לנו, כי 16 זה יותר גדול מ-15.
Hex2Bin
אם כך, נוכל להיעזר בטבלה על מנת להמיר הקסדצימלי לבינארי.
במקרה שלנו תספיק לנו טבלה בעלת 4 שורות בלבד עבור כל תו בערך ההקסדצימלי,
וזאת משום שאנו מדברים על ספירה על בסיס 16, כלומר שהסרגל 1-2-4-8 יספיק לנו על מנת להמיר לבינארי, אנו לא זקוקים ליותר מ-4 ספרות, כך או כך כל מה שיבוא מאחורי ערך זה יהיה אפסים,
המספר המקסימלי שלנו שהוא 15 (מיוצג על ידי F) יותר קטן מ-16,
כאשר ייצוג בינארי של כל תו כלשהו הוא 8 תווים (למשל – 000001111 הוא הייצוג הבינארי של F).
שימו לב לדוגמא הבאה שתבאר את הנושא:
נתון לנו הערך ההקסדצימלי 123A, ניעזר בטבלה על מנת להמירו לבינארי.
- הטבלה תחולק ל-4 עמודות, כאשר העמודה הימנית ביותר תייצג את הסרגל (1-2-4-8).
- העמודה הבאה תנאי בוליאני שבודק אם הערך הנוכחי גדול או שווה לערך בעמודת הסרגל.
- בעמודה הבאה נציב את הערך הנוכחי בהתאם לתשובה מהעמודה שמימין לזו הנוכחית.
אם התשובה חיובית – אז נפחית את הערך הנוכחי בערך מעמודת הסרגל. - בעמודה השמאלית ביותר נכתוב את הייצוג הבינארי לתנאי הבוליאני מהעמודה האמצעית,
כלומר שתשובה חיובית תיתן לנו 1, ותשובה שלילית תיתן לנו 0.
הקסדצימלי לבינארי - 1
הקסדצימלי לבינארי - 2
הקסדצימלי לבינארי - 3
הקסדצימלי לבינארי - A
אם כך, נרכיב את הערך הבינארי לפי סדר הטבלאות – 0001001000111010.
Bin2Hex
על מנת להמיר בינארי ל-Hex תספיק לנו טבלה בעלת 2 עמודות,
שגם היא בעלת 4 שורות כמובן (שורה עבור כל מיקום בסרגל הבינארי).
כאמור, כל ספרה הקסדצימלית מיוצגת על ידי ערך בינארי בעל 4 ספרות,
כלומר שאם ניקח את הערך המומר שלמעלה – 0001001000111010 נחלק אותו למקטעים של ארבע:
1010 0011 0010 0001
נעשה חישוב עבור כל אחד מייצוגים בינאריים אלו על מנת להמירו לערך הקסדצימלי.
- בעמודה הימנית נציב את הסרגל הבינארי (1-2-4-8).
- בעמודה השמאלית כל תו מהערך הבינארי לפי הסדר
בכל טבלה כזו, נחבר את הערכים מהעמודה השמאלית שהייצוג הבינארי שלהם הוא 1.
שימו לב לדוגמא הבאה שתבאר את הנושא:
נתון לנו הערך הבינארי 1010 0011 0010 0001, ניעזר בטבלה על מנת להמירו ל-Hex.
בינארי להקסדצימלי - 0001
חיבור הערכים: 1
ייצוג הקסדצימלי: 1
בינארי להקסדצימלי - 0010
חיבור הערכים: 2
ייצוג הקסדצימלי: 2
בינארי להקסדצימלי - 0011
חיבור הערכים: 3 = 2 + 1
ייצוג הקסדצימלי: 3
בינארי להקסדצימלי - 1010
חיבור הערכים: 10 = 8 + 2
ייצוג הקסדצימלי: A
כך שהערך המומר הוא – 123A
קידוד מהנה!