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

Варіанти індивідуальних завдань

Читайте также:
  1. VI. Методичні вказівки щодо виконання індивідуальних завдань.
  2. VIІІ. Комплект контрольних завдань / Екзаменаційні білети.
  3. Варіанти детонації
  4. ВАРІАНТИ ЗАВДАНЬ
  5. Варіанти завдань для домашньої контрольної роботи із дисципліни
  6. ВАРІАНТИ ЗАВДАНЬ ДЛЯ КОНТРОЛЬНОЇ РОБОТИ
  7. Варіанти завдань домашньої контрольної роботи
  8. Варіанти застосування методу. Порівняння з методом переміщень
  9. ВАРІАНТИ КОНТРОЛЬНИХ РОБІТ
  10. Варіанти контрольних робіт для студентів заочної форми навчання
  11. Варіанти контрольних робіт з адміністративного права

Практична робота №2

ПОРОЗРЯДНІ (ПОБІТОВІ) ОПЕРАЦІЇ

 

Теоретичні відомості

 

Це операції, що здійснюються над комірками пам’яті, що містять дані типу char та int. Дані типів float, double, long double та інші складні не можуть приймати участь у порозрядних операціях.

& І (побітова кон’юнкція)
| АБО (побітова диз’юнкція)
^ виключаюче АБО (додавання за mod2)
~ НІ (заперечення)
>> Зсув вправо
<< Зсув вліво

 

& - Операція І (AND)

 

Якщо біт одного з операндів =0, то відповідний біт результату буде =0, незалежно від значення відповідного біта іншого операнда.

Таблиця істинності:

& =
& =
& =
& =

Приклад

A=5

B=12

A&B=?

Розв’язання:

A = (5)10 = (0101)2

B = (12)10 = (1100)2

A&B = (0101)2 & (1100)2 = (0100)2 = (4)10

Програма

#include "stdafx.h"

#include <locale.h>

#include <conio.h>

int main()

{

setlocale(0,"");

int A, B;

printf("\nВедіть A: A = ");

scanf_s("%d",&A);

printf("\nВедіть B: B = ");

scanf_s("%d",&B);

printf("\nA & B = %d",A&B);

getch();

return 0;

}

Операція & може бути використана для очищення (занулення) бітів.

Приклад

Очистити біти 2 і 5 у числа 66.

Розв’язання

1. Переводимо число у двійкову форму:(66)10 = (1000010)2

2. Готуємо маску: (1101101)2 = (109)10

3. Накладаємо маску на число:

(1000010)2

(1101101)2

&----------

(1000000)2

4. Результат: 66 & 109 = 64

 

| - Операція АБО (OR)

 

Якщо біт хоча б одного з операндів =1, то відповідний біт результату буде =1, незалежно від значення відповідного біта іншого операнда.

Таблиця істинності:

| =
| =
| =
| =

Приклад



A=5

B=12

A|B=?

Розв’язання:

A = (5)10 = (0101)2

B = (12)10 = (1100)2

A|B = (0101)2 |(1100)2 = (1101)2 = (13)10

Операція | може бути використана для встановлення бітів.

Приклад

Встановити біти 2 і 5 у числа 66.

Розв’язання

1. Переводимо число у двійкову форму:(66)10 = (1000010)2

2. Готуємо маску: (1101101)2 = (109)10

3. Здійснюємо операцію:

(1000010)2

(1101101)2

|----------

(1101111)2

4. Результат: 66 | 109 = 111

 

^ - Виключаюче АБО (XOR)

Встановлення біта результата в 1, якщо відповідні біти результатів різні.

Таблиця істинності:

^ =
^ =
^ =
^ =

Приклад

A=5

B=12

A^B=?

Розв’язання:

A = (5)10 = (0101)2

B = (12)10 = (1100)2

A|B = (0101)2 |(1100)2 = (1001)2 = (9)10

Приклад

Знайти суму за модулем 2 чисел 66 і 109.

Розв’язання

1. Переводимо число 66 у двійкову форму:(66)10 = (1000010)2

2. Переводимо число 109 у двійкову форму: (109)10 = (1101101)2

3. Здійснюємо операцію:

(1000010)2

(1101101)2

^----------

(0101111)2

4. Результат: 66 ^ 109 = 47

Операція ^ може бути використана для кодування і розкодування.

>> і << - Операції зсуву вправо і вліво

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

Приклад.

(66)10 >> 2 = (1000010)2 >> 2 = (0010000)2 = (16)10

(66)10 << 2 = (1000010)2 << 2 = (100001000)2 = (264)10

Розглянемо послідовний зсув вправо

Таблиця 1 – Результати виконання операцій зсуву

unsigned char x Результат зсуву x
x=128
x=x>>1
x=x>>2
x=x>>3
x=x>>4
x=x>>5
x=x>>6
x=x>>7
     
x=3
x=x<<1
x=x<<2
x=x<<3
x=x<<4
x=x<<5
x=x<<6

 

 


Зсув на 1 біт вліво множить число на 2, в зсув вправо – ділить на 2.

Операціі >> і << дозволяють швидкo множити і ділити цілі числа.

~ - Операція доповнення (НІ)

Здійснює інвертування бітів, тобто перетворює 0 в 1, а 1 в 0.

Часто використовуються в операціях кодування.

Приклад.

А =(66)10

~A = ~(1000010)2 = (0111101)2 = (61)10

~~A = ~(0111101)2 = (100010)2 = (66)10 = A


Варіанти індивідуальних завдань

1. Обчислити R=А&B і перевірити переведенням в десяткову СЧ.

2. Обчислити R=A|B і перевірити переведенням в десяткову СЧ.

3. Обчислити R=A^B, Q=R^B і перевірити переведенням в десяткову СЧ.

4. Обчислити R=~A, Q= ~R.

5. Обчислити A>>c, B>>d і перевірити діленням.

6. Обчислити A<<d, B<<c і перевірити множенням.

7. * Розробити програму для виконання будь-якої порозрядної операції.

8. ** Розробити программу, яка виводить на екран таблицю 1 для довільного додатного числа.

№ варіанта A B c d

 





Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.009 сек.)