משלים ל-2

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

שיטת המשלים ל-2 היא שיטה לייצוג מספרים עם סימן בבסיס בינארי. בשיטה זאת הסיבית השמאלית ביותר (MSB - Most Significant Bit) מייצגת את הסימן של המספר (חיובי או שלילי) ושאר הספרות מייצגות את המספר. שיטה זו מקובלת במחשבים לייצוג של ערכים בינאריים שליליים כיוון שקל יחסית לחשב את ערך המספר וכן לבצע עליו פעולות בסיסיות.

ייצוג[עריכת קוד מקור | עריכה]

על מנת לייצג מספר בן n סיביות בשיטת המשלים ל-2 יש להפריד את הסיבית השמאלית ביותר משאר המספר.

מספרים חיוביים מיוצגים על ידי n-1 הספרות הימניות של המספר בייצוג בינארי רגיל, הסיבית השמאלית ביותר היא 0 ומשמעותה שהמספר חיובי. ניתן לייצג רק מחצית מכמות המספרים החיוביים האפשריים ביצוג ללא סימן. בהתאם, במספרים שליליים הסיבית השמאלית ביותר היא 1 ומציינת שהמספר הוא שלילי.

מספר בינארי יצוג עשרוני כאשר המספר הוא ללא סימן יצוג עשרוני בשיטת המשלים ל-2
0101 5 5
0100 4 4
0011 3 3
0010 2 2
0001 1 1
0000 0 0
1001 9 7-
1010 10 6-
1011 11 5-
1100 12 4-

חישובים[עריכת קוד מקור | עריכה]

על מנת להמיר מספר שלילי למספר המיוצג בשיטת המשלים ל-2 יש לחשב את ערכו המוחלט של המספר, להמיר את הערך המוחלט לייצוג בינארי, להפוך את כל הסיביות (1 ל-0 ו-0 ל-1) ולהוסיף 1.

נמיר לדוגמה את המספר 17-
צעד ראשון: נמיר את ערכו המוחלט של 17- למספר ביצוג בינארי (17 = 0001 0001)
צעד שני: נהפוך את כל הסיביות (1110 1110)
צעד שלישי: נוסיף 1 (1111 1110 = 17-)


חיבור[עריכת קוד מקור | עריכה]

חיבור בשיטה זו מתבצע באותו אופן כמו חיבור בינארי רגיל.

לדוגמה: 2 = (3-) + 5

0000‎ 0101 = 5+
1111‎ 1101 + = 3-
0000‎ 0010 = 2+

חיסור[עריכת קוד מקור | עריכה]

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

לדוגמה: (5-) = 12 - 7

ראשית נמיר את 12- בשיטת המשלים ל-2 (0100 1111) ולאחר מכן נבצע:

0000‎ 0111 = 7+
1111‎ 0100 + = 12-
1111‎ 1011 = 5-

פיתוח השיטה[עריכת קוד מקור | עריכה]

ראשית כל, חשוב להבין שהמשמעות של השלמה ל- 2 היא שכל הספרות הרגילות עד לספרה השמאלית ביותר הינן מוכפלות ב- 2 בחזקת מיקומן, מלבד לספרה השמאלית ביותר שמוכפלת במינוס 2 בחזקת מיקומה, למשל בייצוג השלמה ל-2:

\ 101001 = 2^{0}+ 2^{3}-2^{5}= -23

והרי כזכור 23 בבסיס בינארי הוא 010111:

\ 010111 = 2^{0} + 2^{1} + 2^{2} + 2^{4} + (-2^{5}*0) = 23

אכן ניתן לראות שאם נהפוך את כל הספרות, ונוסיף אחד, נקבל את המוצג לעיל.
כעת, דרך אחת להסתכל על הסיבה לכך שהיפוך הספרות (השלמה ל-1 או יותר נכון Ones' Complement) ולאחר מכן הוספת 1 מייצר את ההשלמה ל- 2 של המספר שאיתו מתחילים, נובעת מהביטוי הבא:

\ 2^{n} = 2^{n-1} + 2^{n-2} + ... + 2^{1} + 2^{0} + 1

במקרה שלקחנו למעלה, עבור 23, n=5. כעת ניתן לייצג את 23 בשתי דרכים:

\ 2^{5} - 2^{3} - 1 = 2^{0} + 2^{1} + 2^{2} + 2^{4}

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

\ 010111 = 2^{0} + 2^{1} + 2^{2} + 2^{4} + (-2^{5}*0) = 23

ועכשיו אם נהפוך את כל הספרות:

\ 101000 = 2^{3} + (-2^{5}*1)

וראינו לפי הפיתוח שחסר אחד כדי שנקבל 23-. לכן מוסיפים אחד!

\ 101001 = 1 +  2^{3} + (-2^{5}*1) = -23

ראו גם[עריכת קוד מקור | עריכה]