כאשר אנחנו רושמים מספר אנו למעשה עושים שימוש במקדמים ובסיסים. כמו בפולינומים. למשל, הרישום של המספר הוא
ניתן לראות שזהו פולינום ריבועי כאשר כלומר
וכעת אנחנו יודעים ש ונקבל את הדרוש. כעובדים עם בסיסים אנחנו תמיד נבין ש ב״פולינום״ הוא קבוע וערכו הוא כערך הבסיס והמקדמים יכולים להיות טבעיים ושייכים ל כאשר הוא הבסיס.
במדעי המחשב יש מספר בסיסים שעובדים איתם צמוד כל הזמן:
deciaml- בסיס 10 הנפוץ והידוע.
binary- בסיס 2, הספרות הם .
octal- בסיס 8 והספרות הן . הסימון שלו הוא מוביל למשל .
hexadecimal - בסיס 16, הספרות הן . מסומן על ידי . בגלל שבבסיס הזה אנחנו עברנו את 10 כספרה, עלינו להוסיף אותיות שמייצגות את המספרים מ 10 עד 15 כספרות. לכן A-F מייצגות את המספרים הנ״ל כספרות.
הבחנה
כל ההמרות שנראה מיוחסות למספרים unsigned אבל עבור מספרים עם סימן ההמרות דומות
Unsigned - המרה מכל בסיס ל decimal
האלגוריתם המרה הוא מאוד פשוט.
עבור בסיס ומספר המיוצג בבסיס הזה. נסמן את אותו כפולינום המיוצג בבסיס
כאשר הוא מספר הספרות ו . לשם הנוחות נגדיר את קבוצת הספרות כקבוצה סדורה, כלומר הסדר של איברי הקבוצה הוא לפי יחס הסדר בינהם , בהתחלה הכי קטן ובסוף הכי גדול.
נגדיר פונקציית המרה של ספרות בבסיס לבסיס כלומר, decimal באופן הבא
כלומר המיקום של בקבוצה הסדורה, אם ניקח למשל את בבסיס hexadecimal המיקום שלו בקבוצה יהיה וערכו הוא אכן .
כמו כן אנחנו יודעים שערכו של בבסיס עשרוני הוא . כעת האלגוריתם מעבר לבסיס 10 יעבוד כך
הפעל על כל מקדמי הפולינום של
החלף את ערכי הפולינום בערכים המתאימים ב (נשים לב שזאת פונקצייה הפיכה, נדבר על ההופכיות בהמשך)
החלף את בערכו הדסימלי
חשב.
למשל:
א) עבור בבסיס בינארי, נקבל
נשים לב שהחזקה היא המיקום של הספרה כאשר תחילת הספירה היא מ.
ב) עבור נקבל
Unsigned - המרת decimal לבסיס כלשהו
האלגוריתם הבא יוכל להמיר בסיס עשרוני לבסיס כלשהו כאשר המספרים חיוביים.
כל עוד לא הגענו למחלק
בצע חלוקה מירבית של המספר העשרוני לפי הבסיס הרצוי
לחילוק הבא העבר את התוצאה ללא שארית
שמור את השארית.
השאריות בסדר הפוך זה המספר הרצוי .
דוגמה 1:
נייצג את בבסיס .
כלומר 12 עם שארית 7.
כלומר עם שארית
כלומר עם שארית .
ניקח את השאריות בסדר הפוך ונקבל ש זה המספר.
דוגמה 2:
נחשב את בבסיס בינארי.
שארית
שלם
0
8
0
4
0
2
1
1
0
כלומר בייצוג בינארי המספר הוא
מעברי בסיסים נפוצים
Bin -> Hex ו Hex-> Bin
הרעיון בנוי על כך שאנחנו יודעים שלמעשה צריך עד 4 בתים כדי לייצג ספרה בבסיס hex ונוכל להמיר באופן הבא.
מבינארי להקס - נוכל פשוט לחלק את הייצוג הבינארי לרביעיות (מימין לשמאל ואם נשאר עודף לרפד באפסים). כל 4 ספרות כעת נמיר לספרה בבסיס 16.
לדוגמה
נחלק לספרות וכל אחד כבר אנחנו יודעים לחשב בנפרד ונקבל .
טיפ להמרה מהירה
תמיד ניעזר במספרים שקל לייצג עם חזקות של למשל אנחנו יודעים עבור המקרה הנ״ל ש בבסיס (חשוב לשים לב שמתייחסים למספר כמו פולינום כלומר האינדקס הראשון מתחיל מ ) ולכן זה שקול ל . כדי להגיע ל הנותרים בדוגמה שלנו אנחנו יודעים שצריך להוסיף עוד שזה בעצם כלומר סך הכל מחברים בבסיס שזה בבסיס כלומר
הקס לבינארי - כל תו בהקס נמיר ל ביטים ונחליף את התו בייצוג הבינארי המתאים.
Bin -> Oct ו Oct-> Bin
הרעיון הוא אותו רעיון רק שהפעם נשים לב שצריך לכל היותר ביטים כדי לייצר ספרה בבסיס .
נבצע פירוק של המספר ל-"שלישיות" אם אנחנו בבינארי או שנפרק כל ספרה ל3 ביטים כדי לעבור מאוקטלי לבינארי.
כל שאר הייצוגים יידרשו לרוב להשתמש באלגוריתם מעבר לעשרוני או בינארי ואז לבסיס אחר