Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Переключення 5-го біту




a = a ^ bitmas;

b ^= bitmas; // Складові порозрядні

c ^= bitmas; // операції

cout<<a<<b<<c<<"\n"; //gmp

}

 

Для переключення 5-го біта з 1 у 0 (виключення 5-го біту) використовується порозрядний оператор І (“&”) разом з оператором порозрядного заперечення (“~”). У випадку переключення 5-го біту з 0 у 1 (включення 5-го біту) використовується порозрядний оператор АБО (“|”). Для переключення заданого біта з 0 у 1 і навпаки, ефективно використовувати виключаюче АБО (“^”).

У даному прикладі спочатку виключається 5-й біт (перетворюється у 0) та в результаті отримаємо три маленькі букви “gmp”. Потім 5-й біт включається (перетворюється у 1) – отримуємо три великі букви “GMP”. На останньому етапі переключаємо отриманий результат, використовуючи виключаюче АБО (“^”) (1 перетворюється у 0) та отримуємо знову три маленькі букви “gmp”.

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

Оператор “виключаючи АБО (^)” використовується у двовимірній графіці GDI при роботі з піксельними операціями, а також в сучасних криптографічних алгоритмах.

Порозрядні операції зсуву.

Синтаксис:

a << b → зсув ліворуч

a >> b → зсув праворуч

 

Приклад:

 

29 << 3 // 232

0 0 0 1 1 1 0 1 // 29

1 1 1 0 1 0 0 0 // 232

← зсув на 3

Ця операція дорівнює 29∙23 = 232

Початковий знак від’ємного числа зберігається. Порозрядний зсув для від’ємного числа робиться наступним чином. При зсуві числа ліворуч “<<” від’ємний знак числа зберігається, а в кінці додаються нулі. При зсуві від’ємного числа праворуч старші розряди заміняються одиницею, а не нулем.

Розпишемо арифметику порозрядного зсуву для додатних та від’ємних чисел.

Якщо x додатне число, тоді

 

x << n = x * 2n

x >> n = x / 2n (цілочисельне ділення)

 

Якщо x від’ємне число, тоді

 

x << n = – (|x| * 2n)

x >> n = – (|x| / 2n) – 1 (|x| / 2n – цілочисельне ділення)

 

Приклад порозрядних зсувів.

 

#include <iostream>

using namespace std;

 

void main()

{

int num_1 = 25; // 0000000000011001

int num_2 = -25; // 1111111111100111

int shift_1, shift_2, shift_3, shift_4;

shift_1 = num_1 << 3; // 0000000011001000 200

shift_2 = num_1 >> 3; // 0000000000000011 3

shift_3 = num_2 << 3; // 1111111100111000 -200

shift_4 = num_2 >> 3; // 1111111111111100 -4

cout << shift_1 << "\t" << shift_2 << "\n";

cout << shift_3 << "\t" << shift_4 << "\n";

// 200 3

// -200 -4

}

Може бути використана складова операція порозрядного зсуву:

<<= – складений порозрядний зсув ліворуч

>>= – складений порозрядний зсув праворуч

signed int num1 = 15;

unsigned int num2 = 15;

num1 <<= 4; //множення на 16 (240)

num2 >>= 3; //ділення на 8 (1)

Контрольні питання

 

1. Які ви знаєте арифметичні операції?

2. Призначення арифметичної операції %.

3. Наведіть приклади складних арифметичних операцій.

4. Які ви знаєте операції відношення?

5. Які ви знаєте логічні операції?

6. Чим відрізняються логічні операції від порозрядних.

7. Опишіть додаткову операцію “?”.

8. Наведіть приклади порозрядних операцій зсуву “<<”, “>>”.

9. Розкрийте сутність операцій інкременту та декременту. Наведіть приклади.

10. Чим відрізняються префіксні та постфіксні операції?

 


Поделиться:

Дата добавления: 2014-12-30; просмотров: 162; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.005 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты