logo

Оператори зсуву в C

У цьому розділі обговорюватимуться оператори побітового зсуву в мові програмування c. Оператор порозрядного зсуву використовується для зрушення двійкових бітів вліво або вправо відповідно до вимог програми.

Оператори зсуву в C

Оператори зсуву класифікуються на два типи на основі положення зсуву бітів.

  1. Оператор зсуву вліво
  2. Оператор правого зсуву

Оператор зсуву вліво

Оператор зсуву вліво — це тип оператора побітового зсуву, який виконує операції над двійковими бітами. Це двійковий оператор, який вимагає двох операндів для зсуву або переміщення позиції бітів ліворуч і додавання нулів до порожнього місця, утвореного праворуч після зсуву бітів.

Синтаксис

 var_name << no_of_position 

У наведеному вище синтаксисі ім’я_змінної представляє ім’я цілочисельної змінної, на якій виконується зсув ліворуч (<<) operation is to be performed shift the binary bits at left side. and no_of_position variable represents number of placed or shifted in other words, operator shifts first operand on side by defined second operand.< p>

Наприклад, значення цілочисельної змінної num дорівнює 22, а її двійкова форма – 10110. Тепер ми використовуємо оператор зсуву вліво, щоб зсунути двійкові біти 2, num = num << 2 дорівнює num = num * (2 ^2). А нове значення num дорівнює 22* (2 ^ 2) = 88, що дорівнює двійковій формі 1011000.

Приклад 1: Програма для демонстрації використання оператора зсуву вліво в C

 #include int main () { // declare local variable int num; printf (&apos; Enter a positive number: &apos;); scanf (&apos; %d&apos;, &amp;num); // use left shift operator to shift the bits num = (num &lt;&lt; 2); // It shifts two bits at the left side printf (&apos; 
 After shifting the binary bits to the left side. &apos;); printf (&apos; 
 The new value of the variable num = %d&apos;, num); return 0; } 

Вихід

 Enter a positive number: 25 After shifting the binary bits to the left side. The new value of the variable num = 100 

Приклад 2: Програма для використання оператора зсуву вліво в даних unsigned int C

 #include int main () { // declare local variable unsigned int num = 0xff; // use left shift operator to shift the bits num = (num &lt;&lt; 2); printf (&apos; 
 After shifting the binary bits to the left side. &apos;); printf (&apos; 
 The new value of the unsigned variable num = %d&apos;, num); return 0; } 

Вихід

 After shifting the binary bits to the left side. The new value of the unsigned variable num = 1020 

Приклад 3: програма для введення позитивного числа від користувача для виконання оператора зсуву вліво

 #include int main () { // declare local variable int num, bit; printf (&apos; Enter a positive number: &apos;); scanf (&apos; %d&apos;, &amp;num); printf (&apos; No. of binary bits shifted to the left side: &apos;); scanf (&apos; %d&apos;, &amp;bit); // use left shift operator to shift the bits num = (num &lt;&lt; bit); printf (&apos; 
 After shifting the bits to the left side. &apos;); printf (&apos; 
 The new value of the num = %d&apos;, num); return 0; } 

Вихід

 Enter a positive number: 40 No. of binary bits shifted to the left side: 4 After shifting the bits to the left side. The new value of the num = 640 

У наведеному вище прикладі двійковий біт додатного числа 40, визначеного користувачем, дорівнює 101000. Після цього ми беремо 4 як число, щоб зсунути двійкові біти вліво. Потім оператор зсуву вліво зсуває 4 двійкові біти вліво, а потім у правій частині створюється простір, який заповнюється або додається 4 нулями в праву сторону, що повертає двійкове значення 1010000000, що еквівалентно десяткове число 640.

Оператор правої зміни

Оператор зсуву вправо – це тип оператора побітового зсуву, який використовується для переміщення бітів у праву сторону, і він представлений у вигляді символу подвійної (>>) стрілки. Подібно до оператора зсуву вліво, оператору зсуву вправо також потрібні два операнди для зсуву бітів у праву сторону, а потім вставляють нулі в порожнє місце, утворене зліва після зсуву бітів.

Синтаксис

 var_name &gt;&gt; no_of_position 

У наведеному вище синтаксисі змінна_ім'я представляє цілу змінну, над якою має бути виконана операція зсуву вправо (>>), щоб зсунути двійкові біти вправо. А змінна no_of_position представляє кількість бітів, які потрібно розмістити або зсунути вправо. Іншими словами, оператор зсуву вправо зсуває двійкові біти першого операнда вправо, визначаючи загальну кількість бітів у другому операнді.

Приклад 1: Програма для демонстрації використання оператора Right Shift у C

 #include int main () { // declare local variable int num; printf (&apos; Enter a positive number: &apos;); scanf (&apos; %d&apos;, &amp;num); // use right shift operator to shift the bits num = (num &gt;&gt; 2); // It shifts two bits at the right side printf (&apos; 
 After shifting the binary bits to the right side. &apos;); printf (&apos; 
 The new value of the variable num = %d&apos;, num); return 0; } 

Вихід

 Enter a positive number: 25 After shifting the binary bits to the right side. The new value of the variable num = 6 

Приклад 2: Програма для використання оператора Right Shift у даних int без знаку C

 #include int main () { // declare local variable unsigned int num = 0xff; // use right shift operator to shift the bits num = (num &gt;&gt; 2); printf (&apos; 
 After shifting the binary bits to the right side. &apos;); printf (&apos; 
 The new value of the unsigned variable num = %d&apos;, num); return 0; } 

Вихід

 After shifting the binary bits to the right side. The new value of the unsigned variable num = 63 

Приклад 3: Програма для введення позитивного числа від користувача для виконання оператора зсуву вправо

 #include int main () { // declare local variable int num, bit; printf (&apos; Enter a positive number: &apos;); scanf (&apos; %d&apos;, &amp;num); printf (&apos; No. of binary bits shifted to the right side: &apos;); scanf (&apos; %d&apos;, &amp;bit); // use right shift operator to shift the bits num = (num &gt;&gt; bit); printf (&apos; 
 After using the right shift operator to shift the bits at the right side. &apos;); printf (&apos; 
 New value of the num = %d&apos;, num); return 0; } 

Вихід

 Enter a positive number: 40 No. of binary bits shifted to the right side: 4 After using the right shift operator to shift the bits to the right. The new value of the num = 2