340 likes | 665 Views
מבנה מחשב. תרגול 1 ייצוג מידע ומספרים בחומרה. יחידות הזיכרון הבסיסיות. פירוש המידע השמור. MS. LS. כיצד יש לקרוא רישום בוליאני? לדוגמא LSB ( Least Significant Bit ) - הסיבית הראשונה מצד ימין ( תורמת הכי מעט להבנה ) בדוגמא הנ"ל ערכה הוא 1. היא מייצגת את המקדם של הערך 2 0
E N D
מבנה מחשב תרגול 1ייצוג מידע ומספרים בחומרה
יחידות הזיכרון הבסיסיות תמר שרוט, נועם חזון
פירוש המידע השמור MS LS • כיצד יש לקרוא רישום בוליאני? לדוגמא • LSB (Least Significant Bit) - הסיבית הראשונה מצד ימין ( תורמת הכי מעט להבנה )בדוגמא הנ"ל ערכה הוא 1. היא מייצגת את המקדם של הערך 20 • MSB (Most Significant Bit) - הסיבית הראשונה מצד שמאל ( תורמת הכי הרבה )בדוגמא הנ"ל ערכה הוא 0. אם היא מייצגת את סיבית הסימן (Sign)אז המספר חיובי (נרחיב על כך בהמשך). אחרת היא מייצגת את מקדם 27 במספר. • בשפת C ניתן להגדיר boolean אך הוא לרוב נשמר ביחידת הזיכרון הבסיסית שניתנת לגישה בעזרת pointer כלומר Byte = 8 bit. בזבזני, מספיק ביט בודד. • ניתן בעזרת פעולת or להשתמש ב-char לאכסן 8 משתנים בוליאניים. • כדי לקרוא את ה- bool ה-i נבצע (x & 2i( >> i
Big / Little Endian Little • קיימות שתי שיטות נפוצות לשמירת את ה Integer הבא 000000010000010010001101 10000000בזיכרון: • אם ערך ה-MSB אגור בכתובת נמוכה הדבר נקרא שיטת Big Endians.
פרשו את המחרוזת 000000010000010010001101 10000000 0 • כמה word (?) כמה מהם זוגיים? • כמה word שליליים? • כמה Byte (?) כמה מהם אי-זוגיים? • כמה HalfWord (?) כמה מהם חיוביים? 1 1 1 +1 = 2 4 1 2 תמר שרוט, נועם חזון
בסיסים (הקדמה 1) • כאשר אנו רושמים מספר אנו למעשה עושים שימוש במקדמים ובסיסים • הרישום של המספר 102הינו למעשה הסכום הבא: • 2 אחדות • 0 עשרות • 1 מאות • נכון להציגו כפולינום מהצורה: • 2*100 + 0*101 +1*102 • 2*1 + 0*10 +1*100 • 2 +0 + 100 = 102 • הבסיס לפולינום הרשום הינו המספר 10 ועל כן מכונה "בסיס 10" • חזקת הבסיס עולה באופן עוקב עם התנועה שמאלה ברישום המספר • ברישום המספר אנו נדרשים רק לציין את ערך המקדמים (A, B ...) שהינה מהתחום 0-9 • כל ספרה המצורפת משמאל היא למעשההמקדם של החזקה הבאה על פני הבסיס הקבוע
בסיסים (הקדמה 2) • מעבר לייצוג עשרוני: • נבצע פירוש של החזקות העולות למספרים עשרוניים • נציב את המקדמים לפי מיקומם בייצוג המקורי • אם צריך נמיר את המקדמים לבסיס עשרוני (נראה בקרוב עבור Hex) • נבצע כפל בין המקדם לבסיס עם החזקה לקבלת הגורמים של המספר • נבצע סכום בין הגורמים השונים • לדוגמא עבור המספר 102 בבסיס 10 • ישנן 3 ספרות לכן נכין את החזקות: • הצבת המקדמים: • המקדמים כבר עכשיו לפי בסיס עשרוני • ביצוע הכפל: 2 + 0 + 100 • ביצוע הסכום: 2 + 0 + 100 = 102
בסיסים (מעבר לעשרוני 2) • Decimal - בסיס 10 הנפוץ והידוע בו יש ברשותנו הספרות 0-9 • 0-9 הינם המקדמים החוקיים ו-10 הינו בסיס הפולינום • הייצוג של מאה ושתיים יהיה 102 • Binary - בסיס 2, הספרות 0-1 כמקדמים ו-2 הינו הבסיס לפולינום • מה יהיה הפרוש של המספר 0 1 1 0 0 1 1? • למעשה זהו 0*20+ 1*21 + 1*22 +0*23+ 0*24 + 1*25 +1*26 + 0*27 + ... • 0*1+ 1*2 + 1*4 +0*8 + 0*16 + 1*32 +1*64+ 0*128 + ... • 0 + 2 + 4 + 0 + 0 + 32 + 64 = 102 תמר שרוט, נועם חזון
בסיסים (מעבר לעשרוני 3) • Octal– בסיס 8 הספרות 0-7 כמקדמים ו- 8 הוא בסיס הפולינום. מסומן ע"י 0 מוביל • מה פירוש הביטוי 6 4 1 0 ? • 6*80+ 4*81 + 1*82 +0*83 +... • 6 + 32 + 64 = 102 • Hexadecimal - בסיס 16 הספרות 0-f כמקדמים 16 הוא בסיס הפולינום מסומן ע"י 0x מוביל • כאן נוצר הצורך להוסיף "ספרות" חדשות לשימוש כמקדמיםספירה עד 16 (לא כולל) הינה 0 1 2 3 4 5 6 7 8 9 abcdef (=15)ו- 16 הוא בסיס הפולינום • מה פירוש הביטוי 0x66 ? • 6*160+ 6*161 + 0*162 +... • 6 + 96 = 102 • מה פירוש הביטוי 0x1af ? • כלומר f*160+ a*161 + 1*162 +... • 15*1+ 10*16 + 1*256 +... • 15 + 160 + 256 = 431 תמר שרוט, נועם חזון
דוגמאות לשם תרגול (פירוש עשרוני) • חשבו את הערך העשרוני של: • 10 (Bin) = • = 2 • 10 (Oct) = • = 8 • 10 (Hex) = • 0x10= 0*160+ 1*161 = 16 • b8 (Hex) = • 0xb8 = 8*160+ b*161 = 8*160+ 11*161 = 8 + 176 = 184 = 0*20+ 1*21 10 = 0*80+ 1*81 010 תמר שרוט, נועם חזון
המרת עשרוני לבסיס כלשהו שיטת השארית (1) • עד שתגיעו למחלק 0 בצעו: • בצע חלוקה מרבית של המספר העשרוני לפי הבסיס הרצוי • לחילוק הבא העבר את התוצאה(!) של החילוק הקודם(לא את השארית!) • רשום את השאריות ש"נפלה בדרך" משמאל לקודמת(הפוך מסדר הכתיבה באנגלית) • עבור המרה של הערך 38 לבסיס 8 (Oct) נבצע את החישוב הבא: • הייצוג יהיה: 046 תמר שרוט, נועם חזון
המרת עשרוני לבסיס כלשהו שיטת השארית (2) • נייצג את 103 בבסיס 8 (Oct): • הייצוג יהיה: 0147 • נחשב את 8 בבסיס 2 (Bin): • הפעם נשמיט את הרישום הכפול • אם אנו כותבים מימין לשמאל כאמורנאסוף מההתחלה לסוף • אם אנו כותבים משמאל לימין עלינו לאסוף את השאריות מהסוף להתחלה 0 1 0 0 0 4 0 2 0 1000 1 1 תמר שרוט, נועם חזון 0
מעברי בסיסים נפוצים • האם כדי להמיר ביטוי מ Bin ל Hex באמת נצטרך לקחת את הביטוי, לחשב את ערכו העשרוני ואח"כ להמירו לפי שיטת השאריות לבסיס Hex? • לא ! ראו את השקפים הבאים תמר שרוט, נועם חזון
BinHex • נרצה לבצע המרה ישירה ללא מעבר לעשרוני • נבצע הרכבה מחדש של המספר ל-"רביעיות" של סיביות לפי הטבלה הבאה (ודאו הבנתכם) • כעת ניתן לייצג ע"י סימן Hex יחיד כל רביעייה • המירו ישירות את 1110 לייצוג Hex: • 1110 e = 0xe • המירו ישירות את 00101110 לייצוג Hex: • 00101110 1110 , 0010 • e , 2 = 0x2e • המירו ישירות את 1111010 לייצוג Hex: • 1111010 1010 , 0111 • a , 7 = 0x7a תמר שרוט, נועם חזון
HexBin • נרצה לבצע המרה ישירה ללא מעבר לעשרוני • נבצע פרוק של הסימן מקור ל-"רביעיות" של סיביותלפי הטבלה הקודמת • כעת ניתן לייצגו ע"י {0,1} • המירו ישירות את 0x10 לייצוג Bin: • 10 0000, 0001 • ייצוג סופי = 00010000 • מה הערך העשרוני? • המירו ישירות את 0xf3 לייצוג Bin: • f3 0011 , 1111 • ייצוג סופי = 11110011 16 תמר שרוט, נועם חזון
BinOct • נרצה לבצע המרה ישירה ללא מעבר לעשרוני • נבצע הרכבה מחדש של המספר ל-"שלישיות" לפי הטבלה הבאה • כעת ניתן לייצג ע"י סימן Oct יחיד כל שלישיה • המירו ישירות את 110 לייצוג Oct: • 110 6 = 6 נכתב 06 • המירו ישירות את 101110 לייצוג Oct: • 101110 110, 101 • 6 , 5 , = 56 נכתב 056 • מה הערך העשרוני? • המירו ישירות את 1111010 לייצוג Oct: • 1111010 010 , 111 , 001 • 2 , 7 , 1 = 0172 46 תמר שרוט, נועם חזון
OctBin • נרצה לבצע המרה ישירה ללא מעבר לעשרוני • נבצע פירוק של המספר ל-"שלישיות" לפי הטבלה הקודמת • כעת ניתן לייצג ע"י {0,1} • המירו ישירות את 0110 לייצוג Bin: • 0110 = 000, 001, 001 001001000 • מה הערך העשרוני? • המירו ישירות את 04526 לייצוג Bin: • 04526 110, 010, 101, 100 • 100101010110 100101010110 72 תמר שרוט, נועם חזון
Oct↔Hex • נרצה לבצע המרה ישירה ללא מעבר לעשרוני • האם ניתן לעבור ישירות בין השניים? • לא • Oct מבוסס בפעולתו על ייצוג מלא בעזרת 3 ביט, ואילו Hex בעזרת 4, למעשה הביט הרביעי שה Hex זקוק לו מאוכסן בתא הראשון של האות הבאה של ה-Oct. • נבצע המרה לבינארי ואח"כ ייצוג מחדשלפי הבסיס האחר כפי שהוסבר מעלה • המירו ישירות את 0172 לייצוג 0x: • 0172 • 010, 111, 001 • 001111010001111010 • 001111010a, 7 • 0x7a • מה ערכו העשרוני? 122 תמר שרוט, נועם חזון
דוגמאות לשם תרגול (המרה בין בסיסים 1) • המירו ישירות את 0xa5 לייצוג Oct: • 0xa5 • 0101, 1010 • 1010010110100101 • 101 , 100,0105, 4, 2 • 0245 • המירו ישירות את 0372 לייצוג Bin: • 0372010, 111, 011 • 01111101011111010 תמר שרוט, נועם חזון
דוגמאות לשם תרגול (המרה בין בסיסים 2) • המירו את 62 ל- Hex בעזרת חלוקה ב 2 בלבד ותוך שימוש בטבלה המקוצרת • נאסוף את השאריות מהסוף להתחלה • כעת קל לנו להמיר לייצוג Hex • 111110 1110 , 0011 • e , 3 0x3e 0 31 1 15 1 111110 7 1 3 1 1 1 0 תמר שרוט, נועם חזון
ייצוג המספר ותמיכה בפעולות בסיסיות • במחשב עצמו אנו תמיד שומרים מידע לפי בסיס בינארי • בעזרת n סיביות ניתן לייצג 2n ערכים • נרצה לייצג מספרים שליליים • אם נאפשר ייצוג של מספרים שליליים האם תחום המספרים קטן? • רצוי שלא, ואף רצוי שלא יהיה ייצוג כפול למספר בודד • מספר המצבים נשאר זהה, משמעותם אחרת • נרצה לבצע פעולות חיבור, חיסור, כפל וחילוק בקלות יחסית • נרצה לייצג שברים. מאוחר יותר נתייחס לסוגיה זו תמר שרוט, נועם חזון
מספרים שליליים Sign • אם המספר חיובי הייצוג Binary הוא הייצוג הרשמי • בתחילת המצגת ציינו כי בייצוג signed, אם ה-MSB הינו 1 אזי המספר שליליאך מהי משמעות יתר הסיביות במצב זה? • הצעות: • Sign – Magnitude – יתר הסיביות מציגות את המספר באופן חיובי. • כלומר 5 = 0101, הייצוג של (5-) יהיה = • קושי! כיצד נרשום את אפס? כיצד נבצע חיבור? • One’s Complement – עבור שלילי יתר הסיביות הפוכות למקור • כלומר 5 = 0101, הייצוג של (5-) יהיה = • קושי! כיצד נרשום את אפס? מה משמעות ביצועand עם אפס? • Two’s Complement – בנוסף להפיכת הסיביות נבצע פעולת חיבור עם …000001 1101 0000 וגם 1000 1010 וגם 1111 0000 תמר שרוט, נועם חזון
מספרים שליליים Two’s Complement • בנוסף להפיכת הסיביות • נבצע פעולת חיבור עם …00001 • כלומר 5 = 0101, הייצוג של (5-) יהיה = • הפעולה זו להפתעתכם (?) סימטרית • נבצעה שוב לייצוג של -5 ונראה זאת • 1011 0100 + 0001 0101 • כיצד נרשום את אפס? • ייצוג יחידני! 0000... • אם ננסה להחיל אליו את החוקיות • כיצד נבצע פעולת חיבור עם שלילי? • ישירות ! ללא צורך בתרגום 1010 + 0001 1011 111... + 0001 00000... תמר שרוט, נועם חזון
דוגמאות לשם תרגול של Two’s (1) • מה הערך של 11111111? • זהו מספר שלילי שכן ה- MSB = 1 • 00000000 + 00000001 00000001 = 1 • הייצוג הוא של המספר (1-) • מה הערך של 10001111? • 01110000 + 00000001 01110001 = 1 + 24 + 25 + 26 = 113 • הייצוג הוא של המספר (113-) • אם הוא signed מה הערך של ה- integer - 0xf020? • ראשית נהפוך לבינארי 0 ,2, 0, f 0000, 0010, 0000, 1111 • אנו רואים כי זהו מספר שלילי 1111000000100000 • התהליך הרגיל ובידינו ערכו החיובי: • לאחר חישוב זריז (ראו הערה) זהו המספר: = 4064- 0000111111100000 תמר שרוט, נועם חזון
דוגמאות לשם תרגול של Two’s (2) • מצא את הייצוג של 62-? • ראשית נמצא את הייצוג של 62 (ראו שקף מסכם של חלק א) • הייצוג של 62 הינו 111110 • שימו לב כי נראה כעת כי ה MSB שלו הוא 1 ולכן המספר כבר שלילי !! • כדי לציין כי זהו ערך חיובי נשים אותו במסגרות חוקיות כלומר נאכסן ב-Byte • 00111110 • כעת כרגיל, נהפוך את הסיביות ונוסיף 0001... • 11000001 + 00000001 11000010 • שימו לב! • מעכשיו יש להקפיד על ייצוג בינארי במסגרות חוקיות של Bytes / Half words / Words / Double words. • כלומר במסגרות של 8 / 16 / 32 / 64 סיביות. תמר שרוט, נועם חזון
מציאת ערך Two’s Complement בקלות • שיטה אלטרנטיבית לחישוב השלילי: • קחו את ה-MSB כמספר חיובי בחזקה הרלוונטית לו • חסרו ממנו את הערך החיובי של ה 1-ים בייצוג המקורי • הוסף את סימן המינוס • מה ערכו של ה 1001000000100000? • לפי השיטה המקורית חשב את: 0110111111100000 • אך כאן? • ערכו של ה- MSB עבור מספר בן 16 סיביות הינו 215 ולכן ערכו 32768 • ממנו יש להפחית במקרה זה את 25 ואת 212 • סה"כ (32 + 4096) – 32768 = 28640 • ולבסוף קיבלנו -28640 תמר שרוט, נועם חזון
מציאת הייצוג השלילי של מספר ידוע בקלות • שיטה אלטרנטיבית למציאת הייצוג השלילי (Two’s): • קחו את הייצוג החיובי ותוך מעבר מימין לשמאל • העתיקו את הערכים עד (כולל) שתגיעו ל-1 הראשון מימין • לאחר ה 1 הראשון מימין, המשיכו להעתיק תוך הפיכת הערכים • מצאו את הייצוג של 72- • ראשית עלינו למצוא את הייצוג שלו בצורה בינארית • הייצוג של 72 ע"פ שקף קודם הינו 1001000 = 8 + 64 • בצורתו המלאה 01001000 • בשיטה המהירה: 1 0 1 1 1 0 0 0 תמר שרוט, נועם חזון
פעולות אריתמטיות עם מספרים שלמים חיבור וחיסור
מספר בייצוג של פולינום עם בסיס b • הנוסחה של ייצוג מספר כפולינום ניתן לייצג כך: • לכן טווח המקדמים הינו תמיד עד (לא כולל) הערך של bשהרי אם ai = b אז למעשה היה עלינו לתת ל- ai את הערך 0 ולבצע ai+1 ←ai+1 +1 תמר שרוט, נועם חזון
פעולת חבור וחיסור בין שלמים • קל לראות כי אילו נחבר/נחסר שני מספרים (פולינומים) בעלי בסיס זהה אנו למעשה מחברים/מחסרים את המקדמים • שוב נידרש "להעביר הלאה" את העודפים של מקדם שעבר את ערך הבסיס או "להשאיל" ממקדם גבוה במקרה הצורך • לדוגמא: 19 + 1 = 9*100+ 1*101 + 1*100 +0*101 =0*100+2*101 = 20 תמר שרוט, נועם חזון
ed 10 10 15 דוגמאות של חיבור וחיסור (שלמים חיוביים) • חיבור: • חיסור 1 1 1 1 1 1 1 0001 1 0 0 0 1 f 0 3 b 01 12 9-1 9 1-1 8 9 9 1 1 0 0 0 000 0 c 7 9 תמר שרוט, נועם חזון