PracticU

ייצוג מספרים במחשב

בלי כתוביותעם כתוביות
PracticU › קורס יסודות התכנות - שפת C# .NET - קורס תכנות למתחילים - דוט-נט / סי-שארפ - חומר לימוד של מדעי המחשב › ייצוג מספרים במחשב
מילון מושגים:
זיכרון - רכיב מהיר ונדיף שבו המחשב שומר נתונים ותוכניות בזמן ריצתם. תוכנו נמחק עם כיבוי המחשב.
בינארי - ייצוג מידע בבסיס 2 בעזרת הספרות 0 ו-1. גם קובץ הכולל קוד מכונה ולא טקסט קריא.
ביט - יחידת המידע הקטנה ביותר במחשב, שערכה 0 או 1. שמונה ביטים מרכיבים בייט.
משתנה - שם שמפנה למקום בזיכרון שבו נשמר ערך שיכול להשתנות במהלך ריצת התוכנית, כמו מספר, טקסט או אובייקט.

ייצוג מספרים במחשב
הסרטון מסביר איך המחשב שומר מספרים בזיכרון בשפה בינארית, איך מייצגים אותם בבסיס דצימלי ובבסיס הקסה-דצימלי, ומהם גבולות הטיפוסים.
השלבים העיקריים
1. בסיסים שונים: אותו מספר אפשר לכתוב בכל בסיס. הדצימלי משתמש בעשר ספרות, כי לבני אדם יש עשר אצבעות. הבינארי משתמש בשתי ספרות, 0 ו-1. ההקסה-דצימלי משתמש בשש עשרה ספרות: 0 עד 9 ו-a עד f.
2. בית (byte): זיכרון בגודל שמונה ביטים. כל ביט שומר 0 או 1, והביט השמאלי ביותר הוא החשוב ביותר. הערך של כל תא בזיכרון נקבע מסכום הביטים שדלוקים בו.
3. דוגמה - המספר 13: בבינארי 13 הוא 1101, ובבית הוא נשמר כ-00001101. לחישוב: 1 כפול 2 בחזקת 0, ועוד 1 כפול 2 בחזקת 2, ועוד 1 כפול 2 בחזקת 3, כלומר 1 + 4 + 8 = 13.
4. טווח: בית יכול לשמור מ-0 עד 255. sbyte שומר מ-128- עד 127, כי הביט השמאלי שמור לסימן. לכן טיפוס שמסוגל לערכים שליליים מכיל פחות ערכים חיוביים.
5. הקסה-דצימלי: כל ספרה הקסה מייצגת ארבעה ביטים, ולכן בית מיוצג על ידי שתי ספרות הקסה. 0xFF הוא 255, הערך המקסימלי של בית.
כלים מהסרטון
- byte.MaxValue ו-sbyte.MinValue מציגים את הגבולות של הטיפוס.
- מחשבון מדעי במצב מתכנת מאפשר להמיר בין הבסיסים.
שימו לב
כתיבת 256 לבית תיתן שגיאת קומפילציה, כי הערך חורג מהטווח. לקריאה נוחה יותר של ביטים משתמשים בהקסה.
הבנת הייצוג הבינארי מסבירה מה נשמר בתוך המשתנה ומה הגבולות של כל טיפוס.
השיעור הבא בקורס: ביצוע פעולות ברמת סיביות

פרקי ההרצאה: ייצוג מספרים במחשב

  1. 00:00

    למה כדאי להבין ייצוג מספרים במחשב

  2. 02:11

    בסיס דצימלי ובסיס בינארי

  3. 04:26

    ספירה בבסיס בינארי

  4. 06:45

    ייצוג הקסדצימלי

  5. 08:39

    איך המחשב שומר ביטים בזיכרון

  6. 12:23

    המרת 13 לבינארי ובחזרה

  7. 17:00

    המספר המקסימלי בבית אחד: 255

  8. 21:26

    טווחי הערכים של טיפוסי מספרים

תמלול ההרצאה: ייצוג מספרים במחשב

הטקסט המלא של הדקות הראשונות בהרצאה «ייצוג מספרים במחשב» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:01

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

  2. 00:14

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

  3. 00:32

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

  4. 00:47

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

  5. 01:07

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

  6. 01:26

    אז מאוד קל לא לחשב עם הקונספט של עשר ספרות. אבל כל מספר יכול להיות מיוצג על ידי מספר שונה של ספרות, כלומר, אותו מספר אנחנו יכולים לייצג על ידי 10 ספרות, על ידי 11 ספרות, על ידי 2 ספרות, על ידי 30 ספרות וכולי.

  7. 01:45

    זה לא משנה כמה ספרות יש במתמטיקה, עדיין אנחנו יכולים לייצג מספר. אם יש לנו לדוגמה 30 תפוחים, אנחנו יכולים לרשום 30 תפוחים על ידי 3,0, ואז זה אומר שאנחנו מייצגים את המספר 30 תפוחים בייצוג דצימלי, זה לא ייצוג של המתמטיקה הרגילה.

  8. 02:06

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

  9. 02:18

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

  10. 02:40

    אנחנו רוצים לספור בשיטה דצימלית. דצימלית זה אומר שיש לנו 10 ספרות. אז מה בעצם אנחנו עושים? אז אנחנו רוצים לייצג את הספרה 0, והיא פשוט 0.

  11. 02:51

    לאחר מכן עומדת הספרה 1, 2, 3, 4, 5, 6, 7, 8, 9. ופה נגמרו לנו הספרות. מה אנחנו עושים? אז כולנו יודעים שאנחנו הולכים לרשום 1, 0.

  12. 03:03

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

  13. 03:30

    0 ואז את הספרה וכולי ואנחנו עכשיו לוקחים את הספרה הבאה כ-1 ומתחילים לרשום 1 ואז הספרה 0, 1 ואז הספרה 1, 1 ואז הספרה 2 וכולי, 3, 1, 4, בואו נשלים את זה, יש לנו פה טבלה 1, 5, 1,

  14. 03:59

    1, 6, 1, 7, 1, 8, 1, 9 וסיימנו בעצם את הספרה 1. אז אנחנו יכולים לקחת את הספרה הבאה בתור שהיא 2 ולהתחיל לרשום 2 ולספור מההתחלה 2, 0, 2, 1, 2, 2 וכו'.

  15. 04:22

    אז אנחנו יודעים שככה אנחנו בעצם סופרים עם 10 ספרות. למה אני מראה לכם את זה? כי זאת בדיוק השיטה שבה אנחנו סופרים בכל שיטה של מספר אחר של ספרות שקיימות.

  16. 04:37

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

  17. 04:51

    אבל מה זה אומר 0? זה אומר שיש לנו 0,0 ו-1 זה אומר שיש לנו 0,1. אז זה נראה כאילו שסיימנו את הסבב הזה עם ה-0, ועכשיו אנחנו יכולים להתחיל סבב עם 1.

  18. 05:04

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

  19. 05:29

    כאן אנחנו יכולים להגיד שבעצם כולם מתחילים באפס ולכן כאן בגלל שאין לנו יותר מקום לשים אחדים האחד קופץ לצד שמאל והכל אפסים.

  20. 05:43

    בדיוק כמו שהיה לנו תשע תשע תשע ואז אחד היה קופץ וכולם אפסים. הספר הבא אחרי 999 זה 1000. אוקיי, אז בואו נמשיך, יש לנו 1001, 1010, 1011, 1100, לאחר מכן 1101, 1110 ולבסוף 1111.

  21. 06:11

    כאן בעצם רשמנו את כל הספרות מ-0 עד 15 בבסיס דצימאלי, זה נקרא בסיס 10, וכאן רשמנו את כל הספרות מ-0 עד 15 אבל בבסיס בינארי זה אומר מ-0 עד 1111 שזה 15 בבסיס סימאלי.

  22. 06:38

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

  23. 07:01

    נהוג לקרוא לזה הקס. סוג הקס הדצימלי אומר יש לנו סך הכל 16 ספרות ולכן אנחנו יכולים לייצג את המספרים 0 עד 15 עם ספרה אחת והספרות הן 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

  24. 07:21

    כאן סיימנו את הספרות הרגילות אז יש לנו a, b, c, d, e, f. כך לדוגמה אם אנחנו אומרים את הספרה d, זאת ממש ספרה בבסיס הקסה אנחנו מתכוונים ל-1101 בבינארי או למספר 13 בדצימלי.

  25. 07:49

    זאת אומרת שאנחנו יכולים להגיד שיש לנו 13 תפוחים או 1101 תפוחים או D תפוחים וזה יהיה אותו מספר של תפוחים אנחנו פשוט צריכים להבין באיזה בסיס אנחנו מדברים כרגע אז העולם תמיד מדבר בבסיס דצימלי אבל מחשבים מדברים תמיד בבסיס בינארי בסיס הקסה זה בכדי שאנחנו המתכנתים נוכל להבין יותר טוב

  26. 08:19

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

  27. 08:58

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

  28. 09:17

    אבל איך המחשב שמר את המספר 13 בתוך הזיכרון n1, בתוך תא הזיכרון n1? מה שהמחשב עשה הוא היה חייב להפוך את המספר 13 מדצימלי לבינארי והסיבה היא כי המידע נשמר בתוך זיכרון שהזיכרון עצמו מכיל רכיבים שנקראים טרנזיסטורים.

  29. 09:46

    הטרנזיסטור יכול לשמור אחד משני ערכים או 0-1 לוגי. הוא עושה את זה על ידי שמירת שני מתחים חשמליים שונים, משהו כמו 0.3 מיליוולט מול 0.5 מיליוולט, משהו בסגנון, וכך המחשב יכול לדעת מה הערכים שיש לו.

  30. 10:12

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

  31. 10:28

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

  32. 10:54

    אז אם אנחנו עכשיו נלך ונייצר פה איזושהי טבלה שתתאר לנו בדיוק שמונה ביטים: 1, 2, 3, 4, 5, 6, 7, 8. אנחנו נוכל לראות שיש לנו כאן בעצם תרשים שמייצג לנו בית אחד שנפתח בזיכרון עם שמונה ביטים.

  33. 11:16

    לכל ביט יש אינדקס כאשר הביט השמאלית ביותר נחשבת כביט החשובה ביותר, זה נקרא Most Significant Bits והביט הימנית נחשבת הביט הפחות חשובה, ביט ואנחנו יכולים לתת להם אינדקסים יש לנו פה שבע שש חמש ארבע שלוש שתיים אחד ואפס והאינדקסים של הסיביות השונות הם חשובים בשביל לחשב את המספר אז כעת יש לנו בית אחד שנפתח

  34. 11:57

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

  35. 12:14

    אז אם אנחנו הכנסנו בתוכנית כאן את המספר 13, מה בעצם נכנס כאן? אז 13, אם אנחנו מסתכלים עליו, 13 היה בדצימלי.

  36. 12:23

    אם אנחנו עוברים לבינארי, שזה מה שהמחשב מכניס לזיכרון, אנחנו רואים שזה 1101. אבל רגע, יש לנו פה 8 ביטים.

  37. 12:32

    אז מה שהמחשב עושה הוא משלים אפסים מצד שמאל, וזה בעצם נותן לו את אותו המספר. יש לנו פה 0, 0, 0.

  38. 12:42

    לאחר מכן אנחנו רואים שאנחנו מתחילים את המספר עצמו 1101. וזה בדיוק מה שהמחשב שומר בזיכרון כאשר אנחנו מכניסים את המספר 13. איך המחשב יכול לחשב בחזרה שזה 13?

  39. 13:03

    ויש נוסחה מאוד פשוטה שהמחשב יכול לעבוד איתה בכדי להגיד לנו ש-1101 זה בעצם 13. והנוסחה אומרת דבר כזה decimal number שווה ל-first beat כפול time בחזקת first index של הביט ועוד second beat כפול 2 בחזקת second ועוד כולה וכולה וכולה עד שאנחנו מגיעים ל-nth full time שזה בעצם

  40. 14:05

    הבסיס כי יש לנו שתי ספרות בחזקת nth index. בואו נחשב את זה, מה יש לנו בעצם? יש לנו first bit שזה 1 כפול 2 בחזקת 0 ועוד 0 נכון, אנחנו מגיעים בדיוק לפה כפול 2 בחזקת 1 ועוד 1 כפול 2 בחזקת 2 לאחר מכן יש לנו עוד פעם 1 כפול 2 בחזקת 3 לאחר מקרן יש לנו 0 כפול 2

  41. 15:19

    בחזקת 4, 0 כפול 2 בחזקת 5, 0 כפול 2 בחזקת 6 ולבסוף 0 כפול 2 בחזקת 7. כל הדבר הזה אנחנו יכולים להסתכל עליו ולהגיד אם יש לנו 0 כפול משהו אנחנו יכולים פשוט להתעלם מזה מפני ש-0 כפול כל דבר שווה 0 ובואו נוריד את האפסים כל מה ש-0 פשוט נוריד אותו ויש לנו בעצם הורדה של כל אלה.

  42. 15:58

    מה שנשאר לנו זה 1 כפול 2 בחזקת 0 ועוד 1 כפול 2 בחזקת 2 ועוד 1 כפול 2 בחזקת 3. 2 בחזקת 0 זה 1 אז יש לנו 1 כפול 1 ועוד 1 כפול 2 בחזקת 2 ו4 ועוד 1 כפול 2 בחזקת 3 ו8. 1 כפול כל מספר שווה 1 ולכן יש לנו 1 ועוד 4 ועוד 8. זה שווה ל-13.

  43. 16:35

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

  44. 16:56

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

  45. 17:11

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

  46. 17:40

    כאן אנחנו רואים שיש לנו את המספר הבא 2 בחזקת 0 ועוד 2 בחזקת 1 ועוד 2 בריבוע ועוד 2 בחזקת 3 ועוד 2 בחזקת 4 ועוד 2 בחזקת 5 ועוד 2 בחזקת 6 ועוד 2 בחזקת 7 ועוד 2 בחזקת 8 ליתר דיוק 2 בחזקת 7 זה הערך הסופי.

  47. 18:17

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

  48. 18:44

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

  49. 19:03

    בואו נחזיר את זה ל-13. יש לנו טיפוס נתונים שנקרא sbyte. s זה קיצור של signed. כלומר, אם אנחנו עכשיו פותחים n2 ואנחנו מכניסים לדוגמה 128, אז אנחנו רואים שיש לנו בעיה להכניס אפילו 128.

  50. 19:30

    למה? מפני שsbyte תופס בזיכרון גם כן byte אחד, אבל אם הסוגים השונים של המספרים השלמים שקיימים, לדוגמה byte, sbyte, int, long, short, מסוגלים להחזיק גם ערכים שליליים, לדוגמה s-bite, זה אומר שה-most significant bit שלהם,

  51. 19:53

    ה-cb הזאת, שמורה בשביל הסימן. והיא אומרת דבר כזה: אם אני 0, אז המספר שיש בכל המשתנה הוא חיובי. אם אני 1, המספר שיש בכל המשתנה הוא שלילי.

  52. 20:07

    ובגלל שאיבדנו cb אחת, אז אנחנו בעצם משחקים פה רק עם 7 cb ולא עם 8 cb, מספר מתקצץ בחצי זאת אומרת שאם יש לנו טיפוס נתונים שמסוגל להיות שלילי טיפוס נתונים שמסוגל לשמור מספרים שלמים הכוונה שמסוגל להיות שלילי כמו sbyte אז המקסימום שלו זה פלוס מינוס חצי מהערכים שיכולים להיכנס

  53. 20:36

    בתוך בית זאת אומרת בית יכול להכיל 0 עד 255. s-byte יכול להכיל מינוס 128 עד פלוס 127 וזאת הסיבה ש-128 לא יכול להיכלל בתוך s-byte זה פלוס 255. כאן אנחנו רואים למה מספרים שמסוגלים להחזיק או יותר נכון טיפוסים שמסוגלים להחזיק ערכים שליליים יכולים להחזיק פחות מטיפוסים שמסוגלים להחזיק ערכים חיוביים

  54. 21:17

    בלבד. אינט מסוגל להחזיק גם שלילי גם חיובי. U-Int מסוגל להחזיק רק חיובי כי הוא Unsigned Integer.

  55. 21:27

    אז כמובן שטווח הערכים הוא מ-0 אבל הוא פי שתיים מהמקסימום שאינט יכול להחזיק. בכל מקרה יש לנו אפשרות להסתכל על בייט נקודה מקס ואליו או מין ואליו ולראות בדיוק את הערכים האלה.

  56. 21:42

    לדוגמה אם אנחנו נדפיס בייט נקודה מין ואליו ובייט נקודה מקס ואליו אנחנו הולכים לראות בעצם את הגבולות של בייט ואנחנו רואים 0 עד 255. אם אנחנו הולכים להדפיס sbyte.min value ואת sbyte.max value אנחנו הולכים לראות מינוס 128 עד 127 שבייסיקלי זה בדיוק אותו הטווח אבל הוא בין שלילי לחיובי.

לקורס המלא: קורס C# למתחילים אונליין

ההרצאה הקודמת: פרמטרים לפונקציה Main

ההרצאה הבאה: ביצוע פעולות ברמת סיביות

הרצאות קשורות מקורסים אחרים

  • מספרים שלמים ועשרוניים ב-SQL
  • הגרלת מספרים אקראיים - Arc4Random
  • איך לפרוץ wifi במחשב
  • ניהול זיכרון במחשב - Paging

קורסים נוספים במסלול

  • קורס פיתוח משחקים יוניטי - Unity - שפת #C