logo

Bitwise Operator ב-C

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

יש לנו סוגים שונים של אופרטורים סיביים בשפת התכנות C. להלן רשימת האופרטורים בשיטת הסיביות:

מַפעִיל משמעות המפעיל
& אופרטור AND Bitwise
| אופרטור OR Bitwise
^ מפעיל OR בלעדי בשיטת Bitwise
~ אופרטור המשלים של אחד (אופרטור לארי)
<< מפעיל משמרת שמאלה
>> מפעיל משמרת ימין

בואו נסתכל על טבלת האמת של האופרטורים הסיביים.

איקס ו X&Y X|Y X^Y
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 1

אופרטור AND Bitwise

אופרטור AND Bitwise מסומן על ידי סימן אמפרסנד יחיד (&). שני אופרנדים שלמים נכתבים משני צידי האופרטור (&). אם הסיביות התואמות של שני האופרנדים הן 1, אז הפלט של פעולת ה-AND היא 1; אחרת, הפלט יהיה 0.

לדוגמה,

 We have two variables a and b. a =6; b=4; The binary representation of the above two variables are given below: a = 0110 b = 0100 When we apply the bitwise AND operation in the above two variables, i.e., a&amp;b, the output would be: Result = 0100 

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

בואו נבין את האופרטור AND bitwise דרך התוכנית.

 #include int main() { int a=6, b=14; // variable declarations printf(&apos;The output of the Bitwise AND operator a&amp;b is %d&apos;,a&amp;b); return 0; } 

בקוד לעיל, יצרנו שני משתנים, כלומר 'a' ו-'b'. הערכים של 'a' ו-'b' הם 6 ו-14 בהתאמה. הערך הבינארי של 'a' ו-'b' הם 0110 ו-1110, בהתאמה. כאשר אנו מיישמים את האופרטור AND בין שני המשתנים הללו,

a AND b = 0110 && 1110 = 0110

תְפוּקָה

Bitwise Operator ב-C

אופרטור OR Bitwise

האופרטור OR בכיוון סיביות מיוצג על ידי סימן אנכי יחיד (|). שני אופרנדים שלמים נכתבים משני צידי הסמל (|). אם ערך הסיביות של כל אחד מהאופרנד הוא 1, הפלט יהיה 1, אחרת 0.

לדוגמה,

 We consider two variables, a = 23; b = 10; The binary representation of the above two variables would be: a = 0001 0111 b = 0000 1010 When we apply the bitwise OR operator in the above two variables, i.e., a|b , then the output would be: Result = 0001 1111 

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

בואו נבין את האופרטור OR bitwise דרך תוכנית.

 #include int main() int a=23,b=10; // variable declarations printf(&apos;The output of the Bitwise OR operator a 

תְפוּקָה

Bitwise Operator ב-C

מפעיל OR בלעדי בשיטת Bitwise

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

לדוגמה,

 We consider two variables a and b, a = 12; b = 10; The binary representation of the above two variables would be: a = 0000 1100 b = 0000 1010 When we apply the bitwise exclusive OR operator in the above two variables (a^b), then the result would be: Result = 0000 1110 

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

הבה נבין את אופרטור ה-OR הבלעדי סיביות דרך תוכנית.

 #include int main() { int a=12,b=10; // variable declarations printf(&apos;The output of the Bitwise exclusive OR operator a^b is %d&apos;,a^b); return 0; } 

תְפוּקָה

Bitwise Operator ב-C

מפעיל משלים ביטוויז

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

לדוגמה,

 If we have a variable named &apos;a&apos;, a = 8; The binary representation of the above variable is given below: a = 1000 When we apply the bitwise complement operator to the operand, then the output would be: Result = 0111 

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

בואו נבין את מפעיל המשלים באמצעות תוכנית.

 #include int main() { int a=8; // variable declarations printf(&apos;The output of the Bitwise complement operator ~a is %d&apos;,~a); return 0; } 

תְפוּקָה

Bitwise Operator ב-C

מפעילי משמרת ביטוויזית

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

  • מפעיל במשמרת שמאלה
  • מפעיל משמרת ימין

מפעיל במשמרת שמאלה

זהו אופרטור שמעביר את מספר הביטים לצד שמאל.

תחביר של אופרטור ההזזה השמאלי ניתן להלן:

 Operand &lt;&lt; n 

איפה,

string substring java

אופרנד הוא ביטוי של מספר שלם עליו אנו מיישמים את פעולת ההזזה שמאלה.

n הוא מספר הביטים שיש להזיז.

במקרה של אופרטור הילוך שמאלה, 'n' ביטים יוזזו בצד שמאל. ה-'n' סיביות בצד שמאל ייצאו החוצה, ו-'n' סיביות בצד ימין מלאות ב-0.

לדוגמה,

 Suppose we have a statement: int a = 5; The binary representation of &apos;a&apos; is given below: a = 0101 If we want to left-shift the above representation by 2, then the statement would be: a &lt;&lt; 2; 0101&lt;<2 = 00010100 < pre> <p> <strong>Let&apos;s understand through a program.</strong> </p> <pre> #include int main() { int a=5; // variable initialization printf(&apos;The value of a&lt;<2 is : %d ', a<<2); return 0; } < pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/c-tutorial/51/bitwise-operator-c-5.webp" alt="Bitwise Operator in C"> <p> <strong>Right-shift operator</strong> </p> <p>It is an operator that shifts the number of bits to the right side.</p> <p> <strong>Syntax of the right-shift operator is given below:</strong> </p> <pre> Operand &gt;&gt; n; </pre> <p> <strong>Where,</strong> </p> <p>Operand is an integer expression on which we apply the right-shift operation.</p> <p>N is the number of bits to be shifted.</p> <p>In the case of the right-shift operator, &apos;n&apos; bits will be shifted on the right-side. The &apos;n&apos; bits on the right-side will be popped out, and &apos;n&apos; bits on the left-side are filled with 0.</p> <p> <strong>For example, </strong> </p> <pre> Suppose we have a statement, int a = 7; The binary representation of the above variable would be: a = 0111 If we want to right-shift the above representation by 2, then the statement would be: a&gt;&gt;2; 0000 0111 &gt;&gt; 2 = 0000 0001 </pre> <p> <strong>Let&apos;s understand through a program.</strong> </p> <pre> #include int main() { int a=7; // variable initialization printf(&apos;The value of a&gt;&gt;2 is : %d &apos;, a&gt;&gt;2); return 0; } </pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/c-tutorial/51/bitwise-operator-c-6.webp" alt="Bitwise Operator in C"> <hr></2></pre></2>

איפה,

אופרנד הוא ביטוי של מספר שלם עליו אנו מיישמים את פעולת העברה ימינה.

N הוא מספר הביטים שיש להזיז.

במקרה של האופרטור להזזה ימינה, 'n' סיביות יוזזו בצד ימין. ה-'n' סיביות בצד ימין ייצאו החוצה, ו-'n' סיביות בצד שמאל מלאות ב-0.

לדוגמה,

 Suppose we have a statement, int a = 7; The binary representation of the above variable would be: a = 0111 If we want to right-shift the above representation by 2, then the statement would be: a&gt;&gt;2; 0000 0111 &gt;&gt; 2 = 0000 0001 

בואו נבין דרך תוכנית.

 #include int main() { int a=7; // variable initialization printf(&apos;The value of a&gt;&gt;2 is : %d &apos;, a&gt;&gt;2); return 0; } 

תְפוּקָה

Bitwise Operator ב-C