איך לחסר מספרים בינאריים?
חיסור מספרים בינאריים דומה מאוד לתהליך החיסור במספרים עשרוניים, עם הבדל עיקרי אחד: בבינארי ישנן שתי ספרות בלבד, 0 ו-1.
המפתח להבנת החיסור הבינארי הוא מושג השאילה, שמתפקד בצורה שונה מעט כאשר מחסרים מספרים בינאריים.
החוקים הבסיסיים של חיסור בינארי
החוקים הבסיסיים של חיסור בינארי הם כדלהלן:
- 0 - 0 = 0
- 1 - 0 = 1
- 0 - 1 = 0
המקרה המעניין מתרחש כשנדרש לחסר 1 מ-0. במצב כזה מתבצעת שאילה מהטור שמשמאל.
דוגמה 1:
1011-1001=?
נתחיל בצעד הראשון. ניישר את המספרים כך שכל ספרה עומדת בטור הנכון:
1 0 1 1
- 1 0 0 1
------------
? ? ? ?
כמו בחיבור בינארי, עובדים מימין לשמאל, טור אחר טור.
-
מתחילים מחיסור הטור הימני ביותר
1-1=0
את התוצאה נרשום מתחת לקו:1 0 1 1 - 1 0 0 1 ------------ 0
-
עוברים לחסר את הטור השני מימין:
1-0=11 0 1 1 - 1 0 0 1 ------------ 1 0
-
עוברים לחסר את הטור השלישי מימין:
0-0=01 0 1 1 - 1 0 0 1 ------------ 0 1 0
-
עוברים לחסר את הטור הרביעי מימין:
1-1=01 0 1 1 - 1 0 0 1 ------------ 0 0 1 0
אימות התוצאה:
אחרי שסיימנו לחסר את כל ארבעת הטורים קיבלנו תוצאה שהיא 10. לצורך וידוא נכונות החישוב, נמיר את המספרים מבינארי לעשרוני:
1 0 1 1 (11)
- 1 0 0 1 (9)
--------
1 0 (2)
- החישוב אושר והוא נכון ✅
אם אתה זקוק להסבר מעמיק על המרה בין בינארי לעשרוני ולהיפך, כדאי לקרוא את המדריך "מהם מספרים בינאריים וכיצד להמיר מספרים מייצוג עשרוני לבינארי והפוך".
דוגמה 2:
1001-101=?
נתחיל בצעד הראשון. ניישר את המספרים כך שכל ספרה עומדת בטור הנכון:
1 0 0 1
- 0 1 0 1
------------
? ? ? ?
נחסר מימין לשמאל.
-
נחסר את הטור הימני ביותר, כאשר 1-1=0:
1 0 0 1 - 0 1 0 1 ------------ 0
-
נחסר את הטור השני מימין, 0-0=0:
1 0 0 1 - 0 1 0 1 ------------ 0 0
-
הטור השלישי מימין מצריך לחסר 1 מ-0: 0-1=?, דבר המחייב שאילה.
נשאיל 1 מהטור השמאלי, נהפוך את הספרה מ-1 ל-0, ונחליף את ה-0 בטור הנוכחי ל-2:
⓪ ②
100 1 - 0 1 0 1 ------------ 0 0כעת נחסר 1 מ-2 בטור השלישי:
⓪ ②
100 1 - 0 1 0 1 ------------ 1 0 0 -
נחסר את הטור השמאלי ביותר: 0-0=0:
⓪ ②
100 1 - 0 1 0 1 ------------ 0 1 0 0
רגע, עוד לא סיימנו. נמיר את המספרים לעשרוניים כדי לוודא: 9-5=4. החישוב אושר והוא נכון ✅
דוגמה 3:
1000-101=?
כאן נדגים חיסור בינארי שבו נדרשת שאילה ממספר טורים.
נתחיל בצעד הראשון. ניישר את המספרים כך שכל ספרה עומדת בטור הנכון:
1 0 0 0
- 0 1 0 1
------------
? ? ? ?
נחסר מימין לשמאל.
-
בטור הימני ביותר החיסור אינו אפשרי באופן ישיר, כיוון ש-1 קטן מ-0. לכן, נדרש לבצע שאילה אותה נעשה מהטור השמאלי הקרוב ביותר שמכיל את הספרה 1.
-
הטור שממנו שואלים (הטור השמאלי הקרוב עם 1) הופך ל-0.
-
כל טור ביניים בין הטור השואל לטור שממנו שואלים משתנה ל-1.
-
הטור הנוכחי (עליו אנו עובדים כעת) מקבל ערך של 2.
ככה זה נראה 🤯:
⓪①①②
1000- 0 1 0 1 ------------נחסר כעת בטור הימני: 2-1=1:
⓪①①②
1000- 0 1 0 1 ------------ 1 -
-
בטור השני מימין 1-0=1:
⓪①①②
1000- 0 1 0 1 ------------ 1 1 -
בטור השלישי מימין 1-1=0:
⓪①①②
1000- 0 1 0 1 ------------ 0 1 1בטור האחרון 0-0=0:
⓪①①②
1000- 0 1 0 1 ------------ 0 0 1 1
רגע, עוד לא סיימנו. נמיר את המספרים לעשרוניים כדי לוודא: 8-5=3. החישוב אושר והוא נכון 🎉
דוגמה 4:
10101-110=?
נתחיל בצעד הראשון. ניישר את המספרים כך שכל ספרה עומדת בטור הנכון:
1 0 1 0 1
- 1 1 1 0
------------
? ? ? ? ?
נעבוד מימין לשמאל.
-
בטור הימני ביותר 1-0=1:
1 0 1 0 1 - 1 1 1 0 ------------ 1
-
בטור השני מימין צריך לחסר 1 מ-0 דבר המחייב שאילה מהטור הכי קרוב משמאל שערכו הוא 1:
⓪② 1 0
101 - 1 1 1 0 ------------ 1אחרי ששאלנו נחסר 1 מ-2 כדי לפתור את הטור:
⓪② 1 0
101 - 1 1 1 0 ------------ 1 1 -
נעבור לטפל בטור השלישי מימין מה שמחייב אותנו לחסר 1 מ-⓪, ולפיכך מחייב שאילה. כיוון שאנחנו לא יכולים לשאול מהטור הסמוך משמאל בו מופיעה הספרה 0, נשאל מהטור הכי סמוך משמאל בו מופיעה הספרה 1:
⓪①②⓪②
10101 - 1 1 1 0 ------------ 1 1נחסר את הטור השלישי מימין: ②-1=1:
⓪①②⓪②
10101 - 1 1 1 0 ------------ 1 1 1 -
נחסר את הטור הרביעי מימין: ①-1=0:
⓪①②⓪②
10101 - 1 1 1 0 ------------ 0 1 1 1 -
הטור השמאלי ביותר הוא ⓪ כי אין מה לחסר:
⓪①②⓪②
10101 - 1 1 1 0 ------------ 0 0 1 1 1
זה לא נגמר עד שלא בודקים!
נמיר את המספרים לעשרוניים כדי לוודא:
21-14=7.
החישוב אושר והוא נכון
🚀.
אולי גם זה יעניין אותך
מהם מספרים בינאריים וכיצד להמיר מספרים מייצוג עשרוני לבינארי והפוך
עבודה עם מספרים בינאריים ואופרציות Bitwise בפייתון
לכל המדריכים בסדרת כישורי מחשב באתר רשתטק
אהבתם? לא אהבתם? דרגו!
0 הצבעות, ממוצע 0 מתוך 5 כוכבים
המדריכים באתר עוסקים בנושאי תכנות ופיתוח אישי. הקוד שמוצג משמש להדגמה ולצרכי לימוד. התוכן והקוד המוצגים באתר נבדקו בקפידה ונמצאו תקינים. אבל ייתכן ששימוש במערכות שונות, דוגמת דפדפן או מערכת הפעלה שונה ולאור השינויים הטכנולוגיים התכופים בעולם שבו אנו חיים יגרום לתוצאות שונות מהמצופה. בכל מקרה, אין בעל האתר נושא באחריות לכל שיבוש או שימוש לא אחראי בתכנים הלימודיים באתר.
למרות האמור לעיל, ומתוך רצון טוב, אם נתקלת בקשיים ביישום הקוד באתר מפאת מה שנראה לך כשגיאה או כחוסר עקביות נא להשאיר תגובה עם פירוט הבעיה באזור התגובות בתחתית המדריכים. זה יכול לעזור למשתמשים אחרים שנתקלו באותה בעיה ואם אני רואה שהבעיה עקרונית אני עשוי לערוך התאמה במדריך או להסיר אותו כדי להימנע מהטעיית הציבור.
שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.
המשתמש באתר צריך להיות מודע לכך שאם וכאשר הוא מפתח קוד בשביל פרויקט הוא חייב לשים לב ולהשתמש בסביבת הפיתוח המתאימה ביותר, הבטוחה ביותר, היעילה ביותר וכמובן שהוא צריך לבדוק את הקוד בהיבטים של יעילות ואבטחה. מי אמר שלהיות מפתח זו עבודה קלה ?
השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.