בסיס הקסדצימלי

ספירה על בסיס הקסדצימלי היא ספירה על בסיס 16. היא משמשת כיום בעיקר בתחום המחשבים, בזכות התאמתה לייצוג תוכנו של זיכרון המחשב - שתי ספרות הקסדצימליות מייצגות בדיוק 8 ספרות בינאריות, סיביות, כלומר בַּית אחד. גודל זה של בית הוצג בשנות ה-50 של המאה ה-20 במחשב IBM 7030 Stretch, וזכה לפופולריות שהפכה אותו לגודל סטנדרטי עם הצגתם של מחשבי IBM System/360 באמצע שנות ה-60.

בבסיס זה יש 16 ספרות: הספרות מ-0 עד 9 זהות לספרות אלה בבסיס עשרוני, ואת 6 הספרות הבאות מסמנים באותיות מ-A, המייצגת 10 (בבסיס עשרוני), עד F המייצגת 15 (בבסיס עשרוני) ו-10 בבסיס הקסדצימלי (וכפולותיו) מייצג 16 בבסיס עשרוני (וכפולותיו). כך לדוגמה המספר 40h מייצג 64 (4*16) בבסיס עשרוני.

שפות תכנות רבות מאפשרות כתיבה של קבועים הקסדצימליים, שמייצגים לא רק ספרות אלא תווים כלשהם, כגון תווי ASCII. 

השיטות הבאות כולן שיטות תקפות לייצוג מספרים הקסדצימליים:

- רישום הבסיס 16 מתחת למספר – לדוגמה F1B8<small><sub>16</sub></small> 

- הוספת האות h בסוף המספר. בשיטת ייצוג זו, כאשר המספר מתחיל באות, מוסיפים 0 'מצד שמאל. לדוגמה 0F1B8h (ניתן להוסיף אפסים מצד שמאל בכל מקרה, אבל כאשר המספר מתחיל באות- חייבים להוסיף) 

- הוספת הצירוף 0x בתחילת המספר – לדוגמה 0xF1B8

==המרת מספר דצימלי למספר הקסדצימלי==

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

ניקח לדוגמה את המספר 4387256:
*נחלק אותו ב-16. נקבל את המספר 274203 ושארית 8. נרשום בצד 8.
*נחלק את 274203 ב-16. נקבל את המספר 17137 ושארית 11, כלומר B. נצרף את B משמאל: B8.
*נחלק את 17137 ב-16. נקבל 1071 ושארית 1. נצרף את 1 משמאל: 1B8.
*נחלק את 1071 ב-16. נקבל 66 ושארית 15, כלומר F. נצרף את F משמאל: F1B8.
*נחלק את 66 ב-16. נקבל 4 ושארית 2. נצרף את 2 משמאל: 2F1B8.
*נחלק את 4 ב-16 ונקבל 0 ושארית 4. נצרף את 4 משמאל: 42F1B8.
קיבלנו ש-4387256 בבסיס דצימלי הוא 42F1B8 בבסיס הקסדצימלי.

==המרת מספר הקסדצימלי למספר דצימלי==

כדי להעביר מספר הקסדצימלי למספר דצימלי, יש להכפיל את הספרה ההקסדצימלית, המומרת לערך הדצימלי שלה (A=10 ,B=11 וכו') בחזקה המתאימה של 16, לפי מיקום הספרה במספר, האם ספרה היא אחדה, עשרה, מאה וכדומה).
<div dir=ltr>
{| cellpadding=0 cellspacing=0 style='border: 1px dashed #000000'
| bgcolor=#F9F9F9 | <font face=verdana>n<sub>1</sub>*16<sup>0</sup>+n<sub>2</sub>*16<sup>1</sup>+n<sub>3</sub>*16<sup>2</sup>+n<sub>4</sub>*16<sup>3</sup>+...+n<sub>m</sub>*16<sup>m-1</sup></font>
|}</div>

דוגמה: נתון המספר ההקסדצימלי AF34BD. נפרק את המספר לספרותיו. בעצם נתון לנו כאן D אחדות, B עשרות, 4 מאות, 3 אלפים, F עשרות אלפים ו-A מאות אלפים. במילים אחרות, אפשר לתרגם את המשפט הנ"ל לביטוי הבא:<div dir=ltr>
{| cellpadding=0 cellspacing=0 style='border: 1px dashed #000000'
| bgcolor=#F9F9F9 | <font face=verdana>D*16<sup>0</sup>+B*16<sup>1</sup>+4*16<sup>2</sup>+3*16<sup>3</sup>+F*16<sup>4</sup>+A*16<sup>5</sup></font>
|}</div>
ואם נמיר את הערכים ההקסדצימליים לערכים הדצימליים שלהם (קרי, האותיות למספרים) הביטוי יראה כך:<div dir=ltr>
{| cellpadding=0 cellspacing=0 style='border: 1px dashed #000000'
| bgcolor=#F9F9F9 | <font face=verdana>13*16<sup>0</sup>+11*16<sup>1</sup>+4*16<sup>2</sup>+3*16<sup>3</sup>+15*16<sup>4</sup>+10*16<sup>5</sup></font>
|}</div>

נשאר רק לפתור את הביטוי, ולקבל את התוצאה: 11482301, שהיא AF34BD בערכים דצימליים.

== המרת מספר הקסדצימלי למספר בינארי ==
כדי להעביר מספר הקסדצימלי למספר בינארי ניתן להפוך כל ספרה הקסדצימלית לארבע הספרות הבינאריות המתאימות לה, ולאחר מכן לכתוב אותן לפי הסדר של המספר ההקסדצימלי.

דוגמה: נתון המספר ההקסדצימלי AF34BD. ניקח כל ספרה הקסדצימלית, ונהפוך אותה למספר בינארי בן 4 ספרות.

A בבסיס 16 שווה ל-1010 בבסיס 2

F בבסיס 16 שווה ל-1111 בבסיס 2

3 בבסיס 16 שווה ל-0011 בבסיס 2

4 בבסיס 16 שווה ל-0100 בבסיס 2

B בבסיס 16 שווה ל-1011 בבסיס 2

D בבסיס 16 שווה ל-1101 בבסיס 2

כעת נכתוב את כל ספרות המספרים הבינאריים לפי הסדר ההקסדצימלי: 101011110011010010111101 (אם הספרה השמאלית ביותר של התוצאה היא 0 יש להשמיטה עד שנגיע למצב בו הספרה השמאלית ביותר היא 1).

קיבלנו שהתוצאה 101011110011010010111101 היא AF34BD בערכים בינאריים.

== המרת מספר בינארי למספר הקסדצימלי ==
כדי להעביר מספר בינארי למספר הקסדצימלי ניתן לחלק את המספר הבינארי לקבוצות של 4 ספרות כל אחת (במידה, ומספר הספרות הבינאריות אינו מתחלק ב-4 כמו מספר בעל 7 ספרות יש להוסיף 0 משמאל למספר כדי להגיע למספר ספרות המתחלק ב-4). לאחר מכן יש להפוך כל 4 ספרות בינאריות מימין לשמאל בספרה ההקסדצימלית המתאימה לה, ולבסוף לכתוב אותן לפי הסדר הבינארי.

דוגמה: נתון המספר הבינארי 110110110

המספר הבינארי בעל 9 ספרות, ולכן יש להצמיד לשמאלו שלושה אפסים כדי להביאו למצב שבו מספר הספרות יתחלק ב-4: 000110110110 

0001 בבסיס 2 שווה ל-1 בבסיס 16

1011 בבסיס 2 שווה ל-B בבסיס 16

0110 בבסיס 2 שווה ל-6 בבסיס 16

כעת נכתוב את כל ספרות המספרים ההקסדצימליים לפי הסדר הבינארי: 1B6 

קיבלנו שהתוצאה 1B6 היא 110110110 בערכים הקסדצימליים.

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

==טבלת המרה לבסיס בין בסיסי מספרים נפוצים== 

==אזכורים==
* בסרט להציל את מארק וואטני מוזכר השימוש בבסיס ספירה הקסדצימלי, תוך כדי כתיבה בקוד ASCII לשם תקשורת עם אנשי כדור הארץ.

==ראו גם==
*תוכנה - מונחים
*סיבית

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

*[http://www.zutopedia.co.il/auto/bases.html המחשה אינטראקטיבית של ספירה בבסיס בינארי והקסדצימלי] מתוך אתר לילדים המלמד מושגים במדעי המחשב
* 
== הערות שוליים ==

קטגוריה:שיטות ספירה