Операції відносини - студопедія

Результати бітових операцій

Будь-які дані, записані в пам'ять ЕОМ, як відомо, є послідовністю біт, тобто послідовність нулів і одиниць. Наприклад, будь-яке число типу int буде займати 2 байта в пам'яті, тобто 16 біт. Його можна розглядати двояко: або як ціле число (так і робиться при виконанні операцій *, /, +, -.%), Або як послідовність біт, що можливо при використанні бітових операцій.

Бітові операції виконуються незалежно над кожним бітом даних. Якщо операція двомісна, то вона виконується над відповідними бітами операндів.

У Сі є наступні бітові операції:

бітове заперечення (одномісна),

побітовое "і" (двомісна),

^ Побітовое "виключають або" (двомісна),

| побітовое "або" (двомісна).

Результат цих операцій визначає таблиця значень для всіляких комбінацій біт двох операндів.

Перший приклад показує, як за допомогою операції | можна встановити в одиницю вибрані біти операнда:

char a, b; / * 00011010 = 26 * /

b = a | 26 / * b = 31 * / / * b = 00011011 = 31 * /

Наступний приклад показує, як за допомогою операції можна обнулити старшу частину байта:

char a, b; / * A = 00101101 = 45 * /

a = 45; / * 00001111 * /

/ * B = 00001101 = 13 * /

До бітових операцій відносяться операції зсуву <<и>>:

a <

a >> b зрушення бітів змінної a вправо на b позицій.

a = 26; / * A = 00011010 = 26 * /

b = a <<2; /* b = 01101000 = 104 */

Зрушення вліво рівносильний множенню на 2 у відповідній мірі. Зрушення вправо - поділу на 2 у відповідній мірі.

Всі бітові операції виконуються зліва направо. У наступному рядку наведені бітові операції в порядку зменшення їх пріоритету.

Для двомісних бітових операцій визначені додаткові операції присвоювання:

a <<= b; эквивалентно a = a <

a >> = b; еквівалентно a = a >> b,

a = B; еквівалентно a = a b,

a ^ = b; еквівалентно a = a ^ b,

a | = b; еквівалентно a = a | b.

Являють собою двомісні операції, призначені для порівняння операндів. У мові Сі є шість операцій відносини:

> = Більше або дорівнює,

<= меньше или равно,

Дія операцій відносини полягає в порівнянні першого і другого операнда. Якщо операнди не задовольняють умові відносини, то результат операції дорівнює нулю, тобто умова помилкова. Якщо операнди задовольняють умові відносини, то результат відношення не дорівнює нулю, тобто умова істинно.

b = (a + 5 <= 4 ); /* b = 0 */

Зі сказаного вище випливає, що в мові програмування С відсутній спеціальний логічний тип даних. Його замінює цілий тип, причому логічного поняття "помилково" відповідає значення 0, а логічного поняття "істина" - будь-яке відмінне від 0 ціле число.

Операції відносини виконуються зліва направо. При нечіткому розумінні їх дії можливе отримання, взагалі кажучи, невірного результату. Наприклад, з точки зору синтаксису мови Сі вираз a

Щоб цей вислів відповідало математичного змістом, його потрібно розбити на дві частини a

Схожі статті

Copyright © 2024