Лабораторная №15
.docxОдеський національний політехнічний університет
Інститут комп’ютерних систем
Кафедра інформаційних систем
Варіант №1
Лабораторна робота №15
По дисципліні “Алгоритмізація і програмування”
Тема: “Побітові операції на мові програмування С”
Виконав:
Студент гр. АІ-171
Анищенко М.О.
Перевірили:
Глава М.Г.
Одеса 2018
Мета роботи: Набуття практичних навичок програмування із застосуванням бітових даних та операції.
Завдання 1: Знайти значення виразу згідно варіанту. Для операцій множення і ділення використовувати зрушення вліво і вправо. Вихідні дані ввести з файлу А, а результат записати у файл В.
Блок-схема 1:
Код програми 1:
#include<stdio.h>
int main()
{
FILE* fa = fopen("a.txt", "r");
FILE* fb = fopen("b.txt", "w");
unsigned int a = 0, b = 0;
while(fscanf(fa, "%d%*c%d", &a, &b) != EOF)
{
int res = (((a + (b << 1)) << 3) + 9) >> 3;
printf("9(%d+2*%d)/8 = %d\n", a, b, res);
fprintf(fb, "%d\n", res);
}
fclose(fa);
fclose(fb);
return 0;
}
Приклад виконання:
Файл a.txt:
12 43
35 23
13 9
4 5
3 7
4 1
Файл b.txt:
99
82
32
15
18
7
Завдання: Для заданих чисел виконати дії, використовуючи логічні побітові операції. Оформити виведення результату кожної операції у вигляді двійкових і десяткових кодів.
Блок-схема 2:
Код програми:
#include<stdio.h>
#include <stdlib.h>
void DecToBin(int a)
{ for(int i = 0; i < 8; i++)
{ printf("%d", (a & 128) ? 1 : 0);
a = a << 1; }}
int main()
{ unsigned char a = 101;
printf("\nBIN(a): ");
DecToBin(a);
printf("\n\n");
printf("1) DEC: %d\n BIN: ", a & 3);
DecToBin(a & 3);
printf("\n\n");
printf("2) DEC: %d\n BIN: ", a & 250);
DecToBin(a & 250);
printf("\n\n");
printf("3) DEC: %d\n BIN: ", a | 8);
DecToBin(a | 8);
printf("\n\n");
printf("4) DEC: %d\n BIN: ", a ^ 96);
DecToBin(a ^ 96);
printf("\n\n");
return 0;}
Приклад виконання:
Висновки:
Написані програми реалізують процеси ділення та множення за допомогою побітових операцій, а також виконують певні логічні операції з цілими часлами.