Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introduction to Programming and the C Language

Similar presentations


Presentation on theme: "Introduction to Programming and the C Language"— Presentation transcript:

1 Introduction to Programming and the C Language
Bit-wise operators and bit-wise operations Revital Hollander

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

3 Bit-Wise Operators ~ not & and | or ^ xor >> shift right
<< shift left

4 Operator ~ האופרטור הופך את כל הביטים של המשתנה
ביט השווה ל-1 יהפוך ל-0 ולהיפך למשל: unsigned char x=90 הייצוג הבינארי של המשתנה הוא: x= ~x=

5 Operator & האופרטור & מבצע של שני אופנדים x,y פעולת and על כל שני ביטים הנמצאים באותו המיקום למשל: unsigned char x=90, y=65 הייצוג הבינארי של המשתנים הוא: x= y= x&y=

6 Operator | האופרטור | מבצע של שני אופנדים x,y פעולת or על כל שני ביטים הנמצאים באותו המיקום למשל: unsigned char x=90, y=65 הייצוג הבינארי של המשתנים הוא: x= y= x|y =

7 פעולת XOR בהינתן שתי סיביות, האופרטור XOR שווה 1, אם X ו-Y שונים זה מזה ו-0 ,אחרת. להלן טבלת האמת של האופרטור XOR: X xor y y x 1

8 Operator ^ האופרטור ^ מבצע של שני אופנדים x,y פעולת xor על כל שני ביטים הנמצאים באותו המיקום למשל: unsigned char x=90, y=65 הייצוג הבינארי של המשתנים הוא: x= y= x^y=

9 >> shift right operator
האופרטור מזיז את כל הביטים של המשתנה n מקומות ימינה nביטים חדש יתווספו משמאל וערכם 0 על כל הזזה ימינה יחולק המספר ב-2 למשל: unsigned char x=90 הייצוג הבינארי של המשתנה הוא: x= x>>1= x>>2= x>>3=

10 << shift left operator
האופרטור מזיז את כל הביטים של המשתנה n מקומות שמאלה nביטים חדש יתווספו מימין וערכם 0 על כל הזזה שמאלה יוכפל המספר ב-2 למשל: unsigned char x=90 הייצוג הבינארי של המשתנה הוא: x= x<<1= x<<2= x<<3=

11 הדלקת ביט הדלקת ביט הינה הפיכת ביט ל-1.
בדרך כלל, רוצים להדליק אחד הביטים של משתנה ורק אותו. ההדלקה נעשית על ידי שימוש "במסיכה". מסיכה הינו משתנה שכל הביטים שלו 0, פרט לביט אחד שערכו 1במיקום של הביט אותו רוצים לשנות. למשל: unsigned char x=90 x= x=x | 4 /* turn on the third bit */

12 דוגמא - בדיקת ביט void TestBit (unsigned char X, int Place) { X >>= Place; // x = x>> Place X &= 1; // x = x & 1 as x = x & 1 if (X) printf("1"); else printf("0"); } void main (void) { byte Num = 0x55; // הכנסת כל ערך הקסדצימלי דו ספרתי שתרצה לבדוק int i; for (i=7;i>=0;i--) TestBit(Num,i);

13 דוגמא – בדיקת ביט – הבדיקות
TestBit( ,7) -> & //1st left bit is checked TestBit( ,6) -> & //2nd left bit is checked TestBit( ,5) -> & //3rd left bit is checked TestBit( ,4) -> & //4th lest bit is checked TestBit( ,3) -> & //5th left bit is checked TestBit( ,2) -> & //6th left bit is checked TestBit( ,1) -> & //7th left bit is checked TestBit( ,0) -> & //8th left bit is checked

14 Convert decimal number to binary number – a function that writes an integer to a string
void binary(int num, char* st, int size) { int i, mask=1; for(i=size-2; i>=0; i--) if(num&mask) st[i]='1'; else st[i]='0'; mask<<=1; // move the mask one bit left st[size-1]=‘\0’; }

15 Convert decimal number to binary number –the program
void main() { int num,size=sizeof(int)*8+1; char st[size]; printf("Enter an integer: "); scanf("%d", &num); binary(num,st,size); puts(st); }

16 Convert decimal number to binary number - numeric example
num = mask i st st[31]="1“ st[30]="0" st[29]="1“ st[28]="1“ st[27]=“1“ st[26]="0" . st[0]="0"


Download ppt "Introduction to Programming and the C Language"

Similar presentations


Ads by Google