C установка IDE C структура програми C змінні C типи даних С функція printf C константи C арифметичні операції C операції порівняння і логічні операції C порозрядні операції C операції присвоювання C перетворення типів C умовні конструкції C цикли С масиви і рядки С функція scanf C препроцесор. Директива #include C #define директива C макроси C умовна компіляція C функції. Визначення та опис функцій C функції. Передача параметрів в функцію C функції. Повернення результату з функції C функції. Рекурсивні функції C область видимості змінних C зовнішні об'єкти C вказівники C вказівник. Операції з вказівниками C покажчики. Арифметика покажчиків C покажчики. Константи і покажчики C покажчики. Покажчики та масиви C покажчики. Масиви покажчиків, рядки і багаторівнева адресація C покажчики. Покажчики в параметрах функції C покажчики. Динамічна пам'ять C покажчики. Покажчик як результат функції C покажчики. Управління динамічної пам'яттю C покажчики. Покажчики на функцію C покажчики. Покажчики на функції як параметри і результати функцій C покажчики. Функції зі змінною кількістю параметрів C struct. Визначення структур C struct. Структури як елементи структур C struct. Покажчики на структури C struct. Масиви структур C struct. Структури і функції C struct. union об'єднання C struct. Бітові поля С file. Введення-виведення і робота з файлами C file. Читання і запис бінарних файлів C file. Читання і запис структур в файл C file. Читання і запис текстових файлів C file. Форматування вводу-виводу C file. Позиціонування в потоці C file. Консольне введення-виведення

C порозрядні операції


операції зсуву

Кожне ціле число в пам'яті представлено у вигляді певної кількості розрядів. І операції зсуву дозволяють зрушити бітове представлення числа на кілька розрядів вправо або вліво. Операції зсуву застосовуються тільки до цілочисельних операндів. Є дві операції:

  • <<

    Зрушує бітове представлення числа, представленого першим операндом, вліво на певну кількість розрядів, яке задається другим операндом.

  • >>

    Зрушує бітове представлення числа вправо на певну кількість розрядів.

Застосування операцій:

int a = 2 << 2;           // 10  на два розряди вліво = 1000 - 8
int b = 16 >> 3;          // 10000 на три розряди вправо = 10 - 2

Число 2 в двійковому поданні 10 . Якщо зрушити число 10 на два розряду вліво, то отримує 1000 , що в десятковій системі одне число 8 .

Число 16 в двійковому поданні 1000 . Якщо зрушити число 10 на три розряди вправо (три останніх розряди відкидаються), то вийде 10 , що в десятковій системі представляє число 2 .


порозрядні операції

Порозрядні операції також проводяться тільки над розрядами цілочисельних операндів:

  • & : Порозрядне  "і" (операція "і" чи порозрядне множення). Повертає 1, якщо обидва з відповідних розрядів обох чисел рівні 1

  • | : Порозрядне  "або" (операція "або" ). Повертає 1, якщо хоча б один з відповідних розрядів обох чисел дорівнює 1

  • ^ : Порозрядне виключне "або" . Повертає 1, якщо тільки один з відповідних розрядів обох чисел дорівнює 1

  • ~ : Порозрядне заперечення. Інвертує всі розряди операнда. Якщо розряд дорівнює 1, то він стає дорівнює 0, а якщо він дорівнює 0, то він отримує значення 1.

Застосування операцій:

int a = 5 | 2;          // 101 | 010 = 111  - 7
int b = 6 & 2;          // 110 & 010 = 10  - 2
int c = 5 ^ 2;          // 101 ^ 010 = 111 - 7
int d = ~9;             // -10
     
printf("a = %d \n", a);
printf("b = %d \n", b);
printf("c = %d \n", c);
printf("d = %d \n", d);

Наприклад, вираз 5 | 2 дорівнює 7 . Число 5 в двійковому записі рівний 101, а число 2 - 10 або 010. Складемо відповідні розряди обох чисел. При додаванні якщо хоча б один розряд дорівнює 1, то сума обох розрядів дорівнює 1. Тому отримуємо:

1 0 1
0 1 0
1 1 1

В результаті отримуємо число 111, що в десятковому записі представляє число 7.

Візьмемо інший вираз 6 & 2 . Число 6 в двійковому записі рівне 110, а число 2 - 10 або 010. Помножимо відповідні розряди обох чисел. Сума обох розрядів дорівнює 1, якщо обидва цих розряди рівні 1. Інакше Сума дорівнює 0. Тому отримуємо:

1 1 0
0 1 0
0 1 0

Отримуємо число 010, що в десятковій системі дорівнює 2.


Наш партнер:
beta test mp3 playlist downloader