PracticU

ביצוע פעולות ברמת סיביות

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

ביצוע פעולות ברמת סיביות
הסרטון מסביר פעולות על סיביות בודדות בתוך משתנה: הדלקה, כיבוי, בדיקה והזזה, ומציג מקרה שימוש במערכות ריל-טיים.
השלבים העיקריים
1. ההבדל: פעולה רגילה כמו c = a + b פועלת על כל המשתנה. פעולה על סיביות פועלת על ביט בודד, בלי להתייחס לשאר הביטים.
2. הדלקה: פעולת | (OR) עם מסכה (mask) שיש בה 1 במקום של הביט. הביט הנבחר יהיה תמיד 1, והשאר נשמרים. בדוגמה הערך 8 שעבר OR עם 1 נותן 9.
3. כיבוי: פעולת & (AND) עם מסכה שיש בה 0 במקום הביט ו-1 בכל השאר. לדוגמה 0xF7 מכבה את הביט של הערך 8.
4. בדיקה: מבצעים AND עם מסכה שיש בה 1 רק בביט שרוצים לבדוק. אם התוצאה שווה למסכה, הביט דלוק.
5. הזזה: << מזיז את הביטים שמאלה ו->> מזיז ימינה. למשל 8 בהזזה ימינה של ביט אחד נותן 4, ובהזזה של שני ביטים נותן 2.
מתי משתמשים בזה
במערכות ריל-טיים, כמו אזעקה בבית, כל ביט יכול לייצג חיישן אחר: ביט אחד למטבח וביט אחר למחסן. כך אפשר לשמור את כל המצבים בבית אחד, ולבדוק כל חיישן בנפרד.
שימו לב
בתרגילים כותבים פונקציות להדלקה, לכיבוי, לבדיקה ולהזזה של ביט. הפונקציה מקבלת את המספר בעזרת ref, כדי שהשינוי ישמר במשתנה המקורי.
פעולות ביטיות שימושיות כשכל ביט מייצג דבר נפרד, ובמקומות שבהם הזיכרון מוגבל.
השיעור הבא בקורס: רקורסיה - Recursion

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

  1. 00:00

    פעולות על משתנה שלם לעומת סיביות

  2. 01:02

    פעולה על סיבית בודדת

  3. 01:55

    למה פעולות סיביות חשובות: מערכות real time

  4. 03:07

    דוגמה: אזעקה עם סיביות לאזורים

  5. 04:01

    פעולות על סיביות: הדלקה, כיבוי ובדיקה

  6. 05:18

    אופרטור OR והדלקת סיבית

  7. 10:42

    אופרטור AND וכיבוי סיבית

  8. 13:10

    בדיקה אם סיבית דלוקה

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

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

  1. 00:01

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

  2. 00:20

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

  3. 00:38

    לדוגמה אם יש לנו int a שווה 3 ו-b שווה 4 ואנחנו לוקחים את c ומכניסים לתוכו את a ועוד b זה אומר שב-c יהיה 7. עכשיו לא ביצענו פה פעולה ברמה של סיביות בודדות, ביצענו פה פעולה ברמה של כל המשתנה.

  4. 01:02

    לקחנו את כל המספר של a, חיברנו אותו עם כל המספר של b, יצא לנו שבע והכנפנו אותו לשיא. שבע ספציפית מתואר על ידי 111. אבל לא עשינו פה פעולה על סיביות בודדות.

  5. 01:17

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

  6. 01:41

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

  7. 01:55

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

  8. 02:08

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

  9. 02:25

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

  10. 02:53

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

  11. 03:05

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

  12. 03:32

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

  13. 03:48

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

  14. 04:12

    הייתה 0, בדיקה האם סיבית היא 1, בדיקה האם סיבית היא 0, תזוזה של סיביות ימינה ותזוזה של סיביות שמאלה.

  15. 04:21

    בואו נראה איך עושים כל אחד מהם. נניח שיש לנו פה איזשהו משתנה אינטג'רי, נקרא לו a, והוא שווה ל-1. מה זה אומר?

  16. 04:32

    זה אומר שאם אני מסתכל על מה יש לי בתוך a, אז בתוך a יהיה לי 7 אפסים ו-1. עכשיו, כאשר אנחנו משתמשים בפעולות על סיביות, ברור שאם אני מכניס 1 לתוך a זאת תמונת הסיביות שיהיה בתוכו, אבל עדיין נהוג להשתמש בתחביר של x הדצימלי ולכן עדיף לרשום 0x 01 למרות שזה אותו הדבר

  17. 05:04

    אבל זה יותר ברור למי שקורא את זה שאנחנו משתמשים בקונספט של סיביות אוקיי יש לנו את b ואנחנו רוצים להכניס ל-b את מה שהיה ב-a אבל להוריד את הסיבית הזאת זאת אומרת להפוך אותה ל-0 איך אנחנו עושים את זה? אנחנו לוקחים את המשתנה a ואנחנו עושים פעולה שנקראת אור עכשיו שימו לב זה לא

  18. 05:31

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

  19. 05:58

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

  20. 06:20

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

  21. 06:50

    סיבית השנייה עם הסיבית השנייה, סיבית השלישית עם הסיבית השלישית וכולי. האמת שזאת נחשבת סיבית ראשונה, אבל העניין ברור. סיבית ראשונה עם סיבית ראשונה, סיבית שנייה עם סיבית שנייה וכולי.

  22. 07:02

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

  23. 07:15

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

  24. 07:28

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

  25. 07:43

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

  26. 08:01

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

  27. 08:56

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

  28. 09:09

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

  29. 09:29

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

  30. 09:43

    b אמור להיות 9. בואו נריץ את זה, ונראה שb הוא 9. זאת אומרת שאנחנו בעצם משאירים את כל הסימן כמו שהוא, את כל המספר כמו שהוא, ומבצעים פעולה רק על הסיבית שאנחנו רצינו לבצע פעולה עליה.

  31. 09:59

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

  32. 10:11

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

  33. 10:40

    זאת הפעולה הראשונה. פעולה שנייה שאנחנו יכולים לעשות זה end. end זאת הפעולה ההפוכה ומה שהיא עושה היא מחבה. בואו נשים פה end.

  34. 10:56

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

  35. 11:13

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

  36. 11:35

    מה end אומרת? רק אם שתי הסיביות הן 1 אז התוצאה תהיה 1 אם אחת מהן זה 0 התוצאה תהיה 0 ולכן אנחנו אמורים לקבל דבר כזה אנחנו אמורים לקבל 0 בואו נריץ את זה וקיבלנו 0 ב-B נניח שכאן יש לנו 1 מה זה בעצם המספר הזה?

  37. 12:00

    המספר הזה הוא 10 בואו נשים פה 10 אם אנחנו עכשיו מבצעים מסכה של end עם המספר הזה זה אומר שאנחנו רוצים לכבות את הסיבית הזאת בלבד בלי להשפיע על הסיבית הזאת וזאת אכן תישאר 1 מפני ש-1 and 1 ייתן לנו 1. זאת אומרת שאנחנו אמורים לקבל עכשיו את המספר הזה והמספר הזה הוא 2. בואו נריץ יש לנו פה 16 בואו נראה

  38. 12:31

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

  39. 13:10

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

  40. 13:56

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

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

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

ההרצאה הבאה: רקורסיה - Recursion

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

  • חישובי IP ברמת סיביות
  • הגדרת ניתוב ברמת סיביות - חלק 1
  • ביצוע פעולות בדף אינטרנט - כחלק מהטסט
  • שמות פרמטרים של פעולות

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

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