У цьому розділі обговорюватимуться оператори побітового зсуву в мові програмування c. Оператор порозрядного зсуву використовується для зрушення двійкових бітів вліво або вправо відповідно до вимог програми.
Оператори зсуву класифікуються на два типи на основі положення зсуву бітів.
- Оператор зсуву вліво
- Оператор правого зсуву
Оператор зсуву вліво
Оператор зсуву вліво — це тип оператора побітового зсуву, який виконує операції над двійковими бітами. Це двійковий оператор, який вимагає двох операндів для зсуву або переміщення позиції бітів ліворуч і додавання нулів до порожнього місця, утвореного праворуч після зсуву бітів.
Синтаксис
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 (' Enter a positive number: '); scanf (' %d', &num); // use left shift operator to shift the bits num = (num << 2); // It shifts two bits at the left side printf (' After shifting the binary bits to the left side. '); printf (' The new value of the variable num = %d', 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 << 2); printf (' After shifting the binary bits to the left side. '); printf (' The new value of the unsigned variable num = %d', 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 (' Enter a positive number: '); scanf (' %d', &num); printf (' No. of binary bits shifted to the left side: '); scanf (' %d', &bit); // use left shift operator to shift the bits num = (num << bit); printf (' After shifting the bits to the left side. '); printf (' The new value of the num = %d', 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 >> no_of_position
У наведеному вище синтаксисі змінна_ім'я представляє цілу змінну, над якою має бути виконана операція зсуву вправо (>>), щоб зсунути двійкові біти вправо. А змінна no_of_position представляє кількість бітів, які потрібно розмістити або зсунути вправо. Іншими словами, оператор зсуву вправо зсуває двійкові біти першого операнда вправо, визначаючи загальну кількість бітів у другому операнді.
Приклад 1: Програма для демонстрації використання оператора Right Shift у C
#include int main () { // declare local variable int num; printf (' Enter a positive number: '); scanf (' %d', &num); // use right shift operator to shift the bits num = (num >> 2); // It shifts two bits at the right side printf (' After shifting the binary bits to the right side. '); printf (' The new value of the variable num = %d', 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 >> 2); printf (' After shifting the binary bits to the right side. '); printf (' The new value of the unsigned variable num = %d', 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 (' Enter a positive number: '); scanf (' %d', &num); printf (' No. of binary bits shifted to the right side: '); scanf (' %d', &bit); // use right shift operator to shift the bits num = (num >> bit); printf (' After using the right shift operator to shift the bits at the right side. '); printf (' New value of the num = %d', 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
)>