Menu

ממיר בסיסי ספירה

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

מאת Nethanel Bar, Co-founder & CEO

עודכן לאחרונה

מוכנים ללמוד תכנות באמת?

ב-Coddy לומדים דרך כתיבת קוד אמיתי בדפדפן: שיעורים אינטראקטיביים, משוב מיידי ועזרה מ-AI כשנתקעים.

מהו ממיר בסיסי ספירה?

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

המספר עצמו לא משתנה בין בסיסים, רק *הייצוג* שלו. 255 בעשרוני הוא 0xFF ב-hex, 0b11111111 בבינארי ו-0o377 באוקטלי. אלה ארבע דרכים שונות לכתוב את אותו ערך.

כלים מודרניים צריכים לטפל במספרים גדולים בלי אובדן דיוק. parseInt הרגיל של JavaScript מעגל בשקט כל מה שמעבר ל-2⁵³, וזה גורם לבאגים עדינים עם ערכי אוגרים של 64 ביט, מזהים וחותמות זמן. ממיר טוב משתמש ב-BigInt מאחורי הקלעים, כך שערך hex של 256 ביט עובר הלוך וחזור בלי שום שינוי.

מה תלמדו תוך כדי המרת בסיסים

  • בינארי משתמש ב-2 ספרות (0, 1), אוקטלי ב-8, עשרוני ב-10 והקסדצימלי ב-16 (0 עד 9, a עד f).
  • כל ספרה בינארית היא *ביט* אחד. 4 ביטים = ספרת hex אחת. 8 ביטים = בית אחד = 2 ספרות hex.
  • Hex הוא פשוט דרך קומפקטית לקרוא בינארי. 0xCAFE הוא 1100 1010 1111 1110 בבינארי, וזה נוח יותר לעין.
  • מספרים מעל 2⁵³ מאבדים דיוק ב-JavaScript רגיל. השתמשו ב-BigInt (123n) כשעובדים עם מספרים שלמים גדולים.

איך להמיר בין בסיסים, צעד אחר צעד

  1. בחרו את בסיס הקלט

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

  2. הקלידו את הערך

    Hex מקבל גם ff וגם 0xff. בינארי מקבל גם 1010 וגם 0b1010. הממיר מסיר את הקידומת אוטומטית.

  3. קראו את כל הבסיסים בבת אחת

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

  4. הפעילו קיבוץ ספרות לקריאות

    קבצו בינארי לפי 4 ביטים (1100 1010 1111 1110) ו-hex לפי 2 תווים (CA FE). שימושי לבדיקת שדות ביטים ו-dumps.

טבלת עזר לבסיסי ספירה

ערכי ייחוס נפוצים בכל ארבעת הבסיסים. BigInt של JavaScript ו-דקדוק הליטרלים המספריים מכסים את התחביר שבשימוש למטה.

עשרוניבינאריאוקטליHex
0000
1111
81000108
10101012A
16100002010
321000004020
64100000010040
100110010014464
1281000000020080
25511111111377FF
256100000000400100
1024100000000002000400
655351111111111111111177777FFFF

דוגמאות להמרת בסיסים לנסות

קודי צבע RGB

Hex
color: #ff8800;
עשרוני
color: rgb(255, 136, 0);

כל זוג ספרות hex הוא בית אחד (0–255) לערוץ אחד. ff = 255, 88 = 136, 00 = 0.

קריאת מסכת הרשאות

עשרוני

5

בינארי

0b101

קריאת הביטים

ביט 0 (קריאה) דלוק, ביט 2 (הרצה) דלוק, ביט 1 (כתיבה) לא. כלומר ההרשאות הן קריאה + הרצה.

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

המרה מדויקת עם BigInt

Hex (גדול מאוד)

0xFFFFFFFFFFFFFFFF

עשרוני

18446744073709551615

זה המספר השלם הגדול ביותר ללא סימן ב-64 ביט. parseInt הרגיל של JavaScript היה מאבד דיוק; BigInt מטפל בו בקלות.

טעויות נפוצות בהמרת בסיסים

  • מבלבלים בין *המספר* ל*ליטרל*. 0x10 ו-10 נראים דומים אבל הם 16 ו-10: תמיד כללו את קידומת הבסיס בקוד.
  • קוראים hex משמאל לימין ושוכחים את סדר הבתים (endianness) ב-dumps של זיכרון גולמי.
  • משתמשים ב-parseInt(big, 16) ב-JavaScript על ערכים גדולים מ-2⁵³. השתמשו במקום זאת ב-BigInt('0x' + hex).
  • מרפדים בתים לא נכון. 0xF שנכתב כבית הוא 0x0F, לא 0xF0: אפסים מובילים חשובים בשדות ברוחב קבוע.
  • מערבבים פרשנות עם סימן ובלי סימן. ה-hex 0xFFFF_FFFF הוא 4294967295 בלי סימן אבל -1 עם סימן (משלים ל-2).

שאלות נפוצות על ממיר בסיסים

איך ממירים בינארי לעשרוני?
הכפילו כל ספרה בינארית בחזקה המתאימה של 2, החל מימין. עבור 1010: 1·8 + 0·4 + 1·2 + 0·1 = 10. או הדביקו אותו בממיר בסיסים לתשובה מיידית.
איך ממירים עשרוני ל-hex?
חלקו שוב ושוב את המספר העשרוני ב-16 ורשמו את השאריות (0 עד 15, כש-10 עד 15 נכתבים כ-A עד F). קראו את השאריות מלמטה למעלה. 255 ÷ 16 = 15 שארית 15 → FF.
למה משמש הקסדצימלי?
Hex משמש בכל מקום שבו צורה קומפקטית וקריאה של בינארי עוזרת: קודי צבע (#ff8800), כתובות זיכרון, dumps של קבצים, כתובות MAC, גיבובים (hashes) ורוב המערכות ברמה הנמוכה.
מה ההבדל בין אוקטלי להקסדצימלי?
אוקטלי הוא בסיס 8 (ספרות 0 עד 7); הקסדצימלי הוא בסיס 16 (ספרות 0 עד 9, A עד F). אוקטלי נדיר היום אבל עדיין מופיע בהרשאות קבצים ב-Unix (0755) ובחלק מהליטרלים המספריים בשפות ממשפחת C.
למה מספרים בינאריים גדלים כל כך מהר?
כל ספרה חדשה מכפילה את מספר הערכים שאפשר לייצג. 8 ביטים מייצגים 256 ערכים; 16 ביטים מייצגים 65,536; 32 ביטים מייצגים יותר מ-4 מיליארד. לכן מסכות ביטים דוחסות הרבה משמעות לתוך מספר קטן.

למידע נוסף

כלי פיתוח נוספים

איור של שפות התכנות ב-Coddy

ללמוד תכנות עם Coddy

להתחיל