המרת בסיסי מספרים: מדריך מעשי למפתחים
ראיתם פעם קוד צבע כמו #FF6B6B ותהיתם מה אומרות האותיות האלה? או ניסיתם לקרוא dump של תעבורת רשת שמלא בקידומות 0x? כל המצבים האלה נפגשים בנקודה אחת: המרת בסיסי מספרים (ממיר בינארי-עשרוני). מדריך זה מסביר כיצד בינארי, אוקטלי, עשרוני והקסדצימלי קשורים זה לזה — עם דוגמאות שמופיעות בעבודה היומיומית של כל מפתח.
למה קיימים בסיסים שונים?
בני אדם סופרים בבסיס 10 (עשרוני) כי יש לנו עשר אצבעות. מחשבים עובדים בבסיס 2 (בינארי) כי לטרנזיסטור יש רק שני מצבים: פועל (1) או כבוי (0). הקסדצימלי (בסיס 16) נוצר כדי לדחוס מידע בינארי: ארבעה ביטים מתכנסים לתו hex אחד. האוקטלי (בסיס 8) עדיין מופיע בהרשאות קבצים ב-Unix.
שליטה בהמרת בסיסים חיונית כדי לـ:
- לקרוא ולכתוב כתובות זיכרון
- לדבג פרוטוקולי רשת
- לעבוד עם ערכי צבע ב-CSS
- להבין הרשאות קבצים במערכות Unix
- לפרש פורמטים של קבצים בינאריים וקידודי תווים
הדוגמה המרכזית: המספר העשרוני 42
נשתמש במספר 42 כדי לראות כיצד אותו ערך מיוצג בכל בסיס:
בינארי (101010): כל ספרה היא חזקה של 2. משמאל לימין (מהספרה הפחות משמעותית): 2 + 8 + 32 = 42.
אוקטלי (52): כל ספרה היא חזקה של 8. (5 × 8) + (2 × 1) = 42.
Hex (2A): כל ספרה היא חזקה של 16. (2 × 16) + (10 × 1) = 42. האות A מייצגת את הערך 10.
המרה ידנית
מעשרוני לבינארי
מחלקים ב-2 שוב ושוב ורושמים את השאריות מלמטה למעלה:
42 ÷ 2 = 21 שארית 0
21 ÷ 2 = 10 שארית 1
10 ÷ 2 = 5 שארית 0
5 ÷ 2 = 2 שארית 1
2 ÷ 2 = 1 שארית 0
1 ÷ 2 = 0 שארית 1
קוראים את השאריות מלמטה למעלה: 101010
מעשרוני להקסדצימלי
מחלקים ב-16 וממפים שאריות לתווי hex (10=A, 11=B ... 15=F):
42 ÷ 16 = 2 שארית 10 (= A)
2 ÷ 16 = 0 שארית 2
קוראים מלמטה למעלה: 2A
מבינארי להקסדצימלי (קיצור דרך)
מקבצים את הספרות הבינאריות בארבע ספרות מהסוף, ממירים כל קבוצה:
101010 → 0010 1010
2 A
תוצאה: 2A — זו הסיבה ש-hex כל כך שימושי לדחיסת נתונים בינאריים.
דוגמה מעשית 1: כתובות IP ב-Hex
מהנדסי רשת עובדים לעתים קרובות עם כתובות IP בפורמט הקסדצימלי. כתובת IPv4 192.168.1.1 מתפרקת כך:
192 → C0
168 → A8
1 → 01
1 → 01
ייצוג hex: C0A8 0101
זה בדיוק הפורמט שבו מופיעות כתובות IP בכלי ניתוח רשת כמו Wireshark בעת בחינת חבילות גולמיות. הבנת ייצוג זה חיונית לאבחון תקלות רשת.
דוגמה מעשית 2: קודי צבע ב-CSS
הצבע #FF6B6B הוא triple hex — כל זוג ספרות מייצג ערוץ צבע (0–255):
FF → 255 (אדום)
6B → 107 (ירוק)
6B → 107 (כחול)
כלומר #FF6B6B הוא RGB(255, 107, 107) — אדום-אלמוגי. כשמעצב אומר "ערוץ אדום מלא" הוא מתכוון ל-FF; "בלי כחול" זה 00. קודי צבע hex הם פשוט שלושה מספרים הקסדצימליים כתובים זה אחר זה.
המרת 6B לעשרוני: (6 × 16) + 11 = 107.
הרשאות קבצים ואוקטלי
הרשאות Unix כמו chmod 755 משתמשות באוקטלי ישירות:
7 = 111 בינארי → קריאה + כתיבה + הרצה
5 = 101 בינארי → קריאה + הרצה (ללא כתיבה)
5 = 101 בינארי → קריאה + הרצה (ללא כתיבה)
755 משמעותו: לבעלים כל ההרשאות, לקבוצה ולאחרים — קריאה והרצה בלבד. האוקטלי מתאים בדיוק לקבוצות של שלושה ביטים בפרמיסיות Unix.
המרה מהירה עם כלי אונליין
חישוב ידני מעולה ללמידה, אך בעבודה שוטפת כלי אונליין מהיר בהרבה. השתמשו בכלים החינמיים של FileCrank:
- decimal binary hex converter online — ממיר בינארי-עשרוני ו-hex בו-זמנית
- Hex Converter — hex לעשרוני, hex לטקסט, ולהפך
- Binary Converter — בינארי לטקסט ועשרוני
- ASCII Converter — קודי תווים ומקביליהם בעשרוני ו-hex
הכניסו 2A וקבלו מיד: 42 עשרוני, 52 אוקטלי, 101010 בינארי.
טבלת עזר מהירה
שימו לב: 255 ב-hex הוא FF — הערך המקסימלי של בייט אחד. לכן צבעים נעים מ-#000000 (שחור) עד #FFFFFF (לבן).
סיכום
המרת בסיסי מספרים היא אחת מהמיומנויות הבסיסיות ביותר במדעי המחשב — ושימושית כל הזמן: בניפוי שגיאות, בקריאת תיעוד טכני, בהבנת אחסון ושידור נתונים. בינארי הוא מה שהמכונה רואה. Hex הוא מה שמהנדסים קוראים. עשרוני הוא מה שבני אדם מעדיפים.
ברגע שמבינים שכל הייצוגים האלה הם פשוט דרכים שונות לכתוב את אותו מספר, המעבר ביניהם הופך לטבעי לחלוטין. נסו את ממיר בסיסי המספרים של FileCrank עם הערכים שלכם.