אתה נמצא כאן יסודות השפה  »  אופרטורים  »  פעולות על ביטים

פעולות על ביטים

המחשב מאחסן את כל הנתונים בבסיס בינארי, ללא קשר לבסיס בו הוכנסו הנתונים (עשרוני, אוקטלי, הקסדצימלי או בינארי). לכן ניתן לבצע על המשתנים פעולות בינאריות ולשם כך קיימים אופרטורים לפעולות על ביטים (bitwise operators).

האופרטורים הם:

תחביר שם תאור
$a & $b פעולת "וגם" AND הערכים שמשמאל ומימין לאופרטור ("האופרנדים") מומרים לערך מספרי שלם (אם צריך. למשל אם האופרנדים הם מחרוזות או מספרים עשרונים) כל ביט באופרנד השמאלי מושווה לביט המתאים באופרנד הימני. אם שני הביטים המושווים הם בעלי ערך 1 אז ערכו של הביט המתאים בתוצאה יהיה 1, אחרת ערכו יהיה 0
$a | $b פעולת "או" OR הביט המתאים בתוצאה יהיה בעל ערך 1 אם באחד משני הביטים המושווים היה הערך 1. אם שניהם בעלי ערך 0 ירשם 0 בביט המתאים.
$a ^ $b פעולת XOR האופרטור xor דומה לאופרטור "או", פרט לכך שהתוצאה תקבל 1 בביט המתאים רק אם בדיוק אחד משני הביטים המושווים הוא בעל הערך אחד (לא שניהם ולא אף אחד מהם).
!$a פעולת השלילה NOT האופרטור הזה עובד רק על אופרנד (נתון) אחד. הוא מבצע פעולה מאוד פשוטה - הוא הופך כל 0 ל 1 וכל 1 ל 0. אם בביט מסויים היה לפני הפעולה הערך 0 אז אחרי הפעלת אופרטור השלילה יהיה בו הערך 1.
$a>>4
$a<<2
פעולת הזזה של ביטים ימינה או שמאלה את פעולת האופרטורים האלה הכי פשוט להסביר בעזרת דוגמא. נקח את המספר הבינארי 10010 . אם נבצע עליו את הפעולה <<, כלומר הזזת כל הביטים מקום אחד ימינה, התוצאה תהיה 01001 (את המקום הריק מצד שמאל ממלא 0) בעצם ביצענו חלוקה בשתיים בבסיס בינארי. באותו אופן, אם נקח את המספר 0010 ונבצע עליו את הפעולה >>, התוצאה תהיה 0100 (את המקום הריק מצד ימין ממלא 0) ובעצם ביצענו הכפלה בשתיים בבסיס בינארי. ניתן לבצע הזזה ביותר ממקום אחד. לדוגמא: 2 << 94 יבצע הזזה ימינה של שני מקומות לכל הביטים בייצוג הבינארי של המספר 94 הכלל הוא שהזזה ימינה משמעותה חלוקה של המספר המקורי ב 2**n כאשר n הוא מספר ההזזות, והזזה שמאלה היא הכפלה ב 2**n .









להוספת תגובה, אנא התחברו לדרכונט.