ארגון המחשב ומערכות הפעלה אביב תשפ א תרגול 4
ב פ ר ק י ם ה ק ו ד מ י ם למדנו איך ל ה ע ב י ר לבסיסים שונים ל מ ד נ ו ז י ז ו ת למדנו איך מייצגים מספרים שלמים ה י ו ם, נחזור על איך מיוצגים מספרים שלמים בעזרת וקטור ביטים, אילו פעולות א פ ש ר לעשות עליו ו ב ס ו ף נעשה קצת חידות נושאות פרסים
ק י ד ו ד ש ל מ י ם- unsigned א ם ה מ ס פ ר ה ו א ) unsigned 0.2 או חיוביים בלבד )- מקודדים את המספר בבסיס ל ש י ט ה ה ז ו ק ו ר א י ם B2U- Binary to Unsigned %&' B2U x! = & x " 2 " "#$ ד ו ג מ ה : 10 = $ 2 0 + ' 2 1 +! 2 0 + ( 2 1 =! 1010 B2U מהו המספר הכי נמוך שאפשר ל י י צ ג? מהו המספר הכי גבוה שאפשר ל י י צ ג?
ק י ד ו ד ש ל מ י ם- signed אמרנו בהרצאה שאפשר אם הוא חיובי- הביט השמאלי אם הוא שלילי- הביט השמאלי ל י י צ ג כ ל מ ס פ ר י ה י ה 0 י ה י ה 1 א ב ל יש בעיה י ש י י צ ו ג נ פ ר ד ל- 0 ול- 0 - ß מבזבזים מקום! מה האלטרנטיבה? Complement 2 s
2 s Complement ק י ד ו ד ש ל מ י ם- -signed זוהי הצורה שבה המחשבים עובדים היום כמות המספרים שאפשר ל י י צ ג ק ט נ ה פ י 2 ) ל מ ה? ( %&! B2T x! = x %&' 2 %&' + & "#$ x " 2 " ד ו ג מ ה : 5 = $ 2 1 + ' 2 1 +! 2 0 + ( 2 1 =! 1011 B2T מהו המספר הכי מהו המספר הכי נמוך שאפשר גבוה שאפשר ל י י צ ג? ל י י צ ג? sign bit (MSB)
נ ג י ד? ו מ ה נ א מ ר מ ה מה אפשר.1.2.3 מה אפשר ל ה ג י ד ע ל ה ק ש ר ב י ן Tmin ו- Tmax? (3 ל ה ג י ד ע ל ה ק ש ר ב י ן Tmax ו- Umax? ד ב ר י ם (
נ ג י ד? ו מ ה נ א מ ר מ ה מה קורה בטווח המספרים? טווחי המספרים שווים 1. טווח המספרים השליליים גדול ב- 1 מטווח המספרים החיוביים 2. טווח המספרים השליליים קטן ב- 1 מטווח המספרים החיוביים 3. פ י כ מ ה ג ד ו ל Umax מ- Tmax? איך המספר 1- מיוצג?
ח י בור כללי החיבור נ ג ד י ר א ת x,y נשארים אותו הדבר להיות מיוצגים ל פ י 4 ס י ב י ו ת x = 4, y = 1 ה א ם = 5 y?x +
ח י ב ו ר ע כ ש י ו נ ג ד י ר א ת x,y להיות מיוצגים ל פ י 5 ס י ב י ו ת x = 5, y = 6 ה א ם 11 = y?x + x = 11011 y = 11010 + מ ע ב י ר י ם ל ב י ט י ם- האם צדקנו?
בעזרת 3 סיביות- סיביות- כלומר 3-7 ב) ח י בור לא תמיד אנחנו צודקים! האם אני ל ל א ד ו פ י? י ש מ ק ר י ם ש ב ה ם ה ג ל י ש ה ה ז ו יוצרת תשובה נ כ ו נ ה! ל א נ ר צ ה ד ו ג מ ה : ל ת א ר א ת 3- ו- 4-4=100, -3=101 ה א ם 7-=(3-)+4-? - ל מ ה? כ י 4- ה ו א ה ע ר ך ה מ י נ י מ ל י Tmin) לא בטווח!
בעזרת 3 סיביות 3 סיביות- כלומר 35 ב) ח י ב ו ר לא תמיד אנחנו צודקים! י ש מ ק ר י ם ש ב ה ם ה ג ל י ש ה ה ז ו יוצרת תשובה נ כ ו נ ה! ל א נ ר צ ה ד ו ג מ ה : ו- ל ת א ר א ת 2 2=010,3=011 ה א ם 5=2+3? - ל מ ה? כ י 3 ה ו א ה ע ר ך ה מ ק ס י מ לי Tmax) לא בטווח!
א ב ל- א ב ל- א ז מ ת י מ ז ה י ם ג ל י ש ה? 1. א ם ש ל י ל י + ש ל י ל י = ח י ו ב י- NegOver ה ת ו צ א ה י ו צ א ת יותר קטנה מ- Tmin ז ו ר ק י ם א ת ה- 1 ß יוצא חיובי. 2. א ם ח י ו בי + ח י ו ב י = ש ל י ל י- PosOver ה ת ו צ א ה י ו ת ר י ו צ א ת גדולה מ- Tmax ז ו ר ק י ם א ת ה- 0 ß יוצא שלילי. + c 3 c 2 c 1 c 0 010 c 3 c 2 c 1 c 0 + 100 011 101 ג ל י ש ה " c c! מה אפשר ל ה ג י ד?
א ב ל- א ב ל- א ז מ ת י מ ז ה י ם ג ל י ש ה? 1. א ם ש ל י ל י + ש ל י ל י = ח י ו ב י- NegOver ה ת ו צ א ה י ו צ א ת יותר קטנה מ- Tmin ז ו ר ק י ם א ת ה- 1 ß יוצא חיובי 2. א ם ח י ו ב י + ח י ו ב י = ש ל י ל י- PosOver ה ת ו צ א ה י ו ת ר י ו צ א ת גדולה מ- Tmax ז ו ר ק י ם א ת ה- 0 ß יוצא שלילי + c 5 c 4 c 3 c 2 c 1 c 0 11011 11010 ז א ת ל ע ו מ ת c # = c $ correct א נ י ר ק ש א ל ה- ה א ם ח י ב ו ר ש ל ח י ו ב י + ש ל י ל י ל ג ל ו ש? י כ ו ל
א מ ר נ ו ק ו ד ם א י ך מ י י צ ג י ם א ת ה מ ס פ ר 1-1 = 111 111 ב ו א ו נבדוק שזה באמת נ כ ו ן א ם 1- ב א מ ת מ י ו צ ג ע י ו ק ט ו ר ש כ ו ל ו א ח ד י ם ß א ם נ ק ב ל 0 ל ו 1 נ ו ס י ף + 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 ה א ם ה א ם נ כ ו ן? י ש ב ע י ה ע ם ה ג ל י ש ה?
-x א נ ח נ ו, x ל נ ו נ ת ו ן האם מספיק ל נ ו ר ו צ י ם ל ע ש ו ת למה? כי החיבור בינהם לדעת מהו ר ק?NOT ל נ ו 1- י י ת ן x x = 0100 ~x = 1011 1111 + למשל : x=4
-x ק י ב ל נ ו 1 = x~ x + אבל אנחנו ר ו צ י ם ל ק ב ל 0- מ ה ע ו ש י ם? x = ~x + 1 ל כ ן
האם מותר- פ ע ו ל ה ל א ח ו ק י ת למדנו על (shifting) ז י ז ו ת ל ה ז י ז ל נ ו ל נ ו? לאן שבא מהי פעולה לא חוקית? פעולה שהתוצאה שלה צ פ ו י ) כמו כאפה ( לא מוגדרת ו י כ ו ל ה להשתנות באופן ל א unsigned א ו int למשל : אנחנו מיוצגים לפי 32 סיביות והמשתנה שלנו x ה ו א מ ס ו ג א ם נעשה 31<<x א ם נעשה 32<<x?- ח ו ק י?- ח ו ק י
ה ל ו ע פ ת י ק ו ח א ל x=001 x<<1 => x=010 x<<2 => x=100 x<<3 => x=000 x=010 x>>1 => x=001 x>>2 => x=000 x=100 x>>1 => x=110 x>>2 => x=111
מ ה ה ל ו ז ע ם?unsigned דיברנו קצת על unsigned ג- מ י י צ ר ק 0 א ו ח י ו ב י י ם א ב ל נשתמש בו רק כשלא נצטרך שליליים? ל מ ה? - יש קומפיילרים שיתנו קוד פחות יעיל כשמשתמשים עם unsigned - קל מאוד לעשות טעויות (ראינו בהרצאה)
מ ה ה ל ו ז ע ם?unsigned א ז מ ת י כ ן נ ש ת מ ש? - כשרוצים טווח י ו ת ר ג ד ו ל למספרים החיוביים - לפעמים משתמשים ב- unsigned כקבוצת ד ג ל י ם - כ ש ר ו צ י ם להשוות מול תוצאות של פונקציות שמחזירות unsigned
ל ס י כ ו ם, ק צ ת מ ק ר י ק י צ ו ן נ נ י ח מ ח ש ב ש מ ב ו ס ס ע ל 32 ס י ב י ו ת ע ם ש י ט ת s 2 Complement נ ג ד י ר : 2!" = 2147483648 2!" 1 = 2147483647 נ ז כ י ר : - א ם א ח ד ה צ ד ד י ם ש ל ה ב י ט ו י ה ו א = unsigned היא> ההשוואה - א ם ש נ י ה צ ד ד י ם ה ם = signed היא> ההשוואה לפי signed ל פ י unsigned True / False סוג השוואה ביטוי -2147483647 == 2147483648U -2147483647-1 < -2147483647 (unsigned)(-7-1) < -7 (-7-1)U < 7