כמעט בוודאות שמעתם על מספרים שליליים. אם הייתה לכם אפילו חשיפה קטנה לעולם מדעי המחשב ותכנות מחשבים, המושג מספרים בינאריים אינו זר לחלוטין. אבל אלא אם כן חקרת את עולם התכנות באופן אישי, כנראה שמעולם לא עבדת באופן מהותי עם מספרים בינאריים.
מכיוון שמחשבים אינם יכולים "לחשוב" או "להחליט" בכוחות עצמם, אלא יכולים למלא אחר הוראות מסודרות בדיוק כושל, מתמטיקאים הגיעו מזמן עם דרך למחשבים (או לבני אדם מספיק סבלניים) לבצע חיבורים, חיסור ופעולות מתמטיות אחרות תוך שימוש רק בספרות 0 ו 1.
אך האם יש דרך לשלב בין שני הרעיונות הללו כדי לייצר מספרים שליליים? האם זה פשוט כמו לומר למכונה להדביק פס אופקי קטן לפני מספר קיים a la עט ונייר, או שהגורם "ביטים ובייטים" גורם לדברים להיות מעורבים יותר?
מהם מספרים בינאריים?
למחשבים יש כמות עצומה של עיבוד, ואפילו ארגון ישן יכול לבצע חישובים בקצב שנראה אפילו לא מובן אפילו לאדם המחונן ביותר מבחינה אריתמטית. אבל הם לא מוח, והדרך היחידה לגרום להם להתמודד עם מידע מורכב היא להעביר את כל מה שאפשר לאחת משתי מדינות, למשל, ON או OFF.
ב- "computer-ese" נקרא 0 או 1 יחיד כ- קצת. קבוצות אלה כוללות את טמטום (4 סיביות), הידוע בתים (8), ה מִלָה (1) ואת מילה ארוכה (32).
המספרים העשרוניים שאתה רואה בדרך כלל, כמו 492 ו -35, הם "בסיס 10", מכיוון שהם כוללים 10 סמלים מתקדמים (הספרות 0 עד 9) "התהפך" למקום הבא שמאלה - "הכוח של 10." הבא. מספרים בינאריים, במקום זאת, כוללים רק שני סמלים (הספרות 0 ו- 1) והם "בסיס -2". כל מהלך שמאלה מקצה המספר הוא כוח הולך וגדל של שניים: ספרות הסיום מייצגות 1, את 2 הבא, ואז 4, 8, 16 ו בקרוב.
- מספר עשרוני הוא כל מספר במערכת הבסיס 10, לאו דווקא מספר הכולל נקודה עשרונית.
דוגמאות למספרים בינאריים
ב"ניבבל "הבינארי 0101 יש 1 במקום 1 ובמקום 4, ו- 0 במקום 2 ו- 8. לפיכך המקבילה העשרונית שלו היא 1 + 4 = 5.
באופן דומה, בתים 1001 1100 שווה ערך ל 128 + 16 + 8 + 4 (28 + 25 + 24 + 23) = 156.
ה מַשׁלִים של מספר בינארי הוא רק המספר עם הספרות שלו "מוחלפות". לדוגמא, ההשלמה של 1001 1100 = 0110 0011.
המרת מספרים שליליים לבינארי
איך להמיר מספר עשרוני שלילי למספר בינארי, כנראה אינו דומה להמרות מספריות אחרות ביצעת מכיוון שמוחך, על אף עצלנותו ההשוואתית, גמיש הרבה יותר מכל האפשרויות מעבד. עם זאת, זהו תהליך פשוט.
ההמרה נעשית באמצעות שניים משלימים בינארי, המחייב את המתכנת להורות למחשב לפרש כל מספר בינארי החל מ- 1 כשלילי. התוכנית אז בונה את המספר החיובי המתאים בבינארי, לוקח את השלמתו ומוסיף אחד.
לדוגמא, בהתחשב במספר −47, המחשב ייצור את המספר הבינארי עבור +47:
0001 1111
ההשלמה לכך היא:
1110 0000
הוספת אחד לזה נותנת:
1110 0001
שים לב שהמחשב "חתם" על מספרים אלה כדי להתייחס ל- 1 מוביל כשלילי ולעבד את התוצאות באופן שונה מאשר פשוט להוסיף את הכוחות של 2 שנכבשים על ידי הסמל 1.