Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Міністерство освіти та науки України
Вінницький національний технічний університет
Інститут автоматики, електроніки та комп'ютерних систем управління
Кафедра-ЛОТ
Лабораторна робота №4
“Бітові операції”
Виконав:студент
групи О-13б
Колесник Г.С.
Перевірив: доцент
Кожем'яко А. В.
Вінниця 2013р.
1. Мета роботи
Метою лабораторної роботи є отримання практичних навичок у роботі з побітовими логічними операціями та операціями зсуву мови C.
2. Теми для попереднього опрацювання
Побітові логічні операції та операції зсуву.
3. Завдання для виконання
Скласти 2 програми, перша з яких вводить складові частини структури даних, наведеної у Вашому варіанті індивідуального завдання, і формує з них задану упаковану структуру. Друга програма вводить упаковану структуру як 16-кове число і виводить значення окремих її складових частин.
4. Варіант індивідуального завдання:
№6
Формат команди зсуву в обчислювальній системі має вигляд:
№ розряду |
15 |
14 |
13 |
12 |
11 |
10 |
09 |
08 |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
Значення |
1 |
1 |
0 |
1 |
T |
T |
D |
N |
N |
N |
N |
N |
N |
N |
N |
N |
де: |
TT - |
тип зсуву |
||||||||||||||
D - |
напрямок зсуву |
|||||||||||||||
N..N - |
кількість розрядів зсуву |
5. Повний текст програми(1,2 частини):
//---------------------------------------------------------------------------
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
#include <stdio.h>
int main(int argc, char* argv[])
{
unsigned int t,d,n,x,UnitStateWord;
printf("enter type of bias (0 - 31) >");
scanf("%d",&t);
printf("enter direction of the shift (0 / 1) >");
scanf("%d",&d);
printf("enter number of bits shift>");
scanf("%d",&n);
/* формування упакованого коду */
UnitStateWord=(0xD)<<12;
UnitStateWord|=(t&0x3)<<10;
UnitStateWord|=(d&1)<<9;
UnitStateWord|=n&0x1FF;
/* виведення результату */
printf("\n Command format shift = %04x\n",
UnitStateWord);
printf("(16-term number of 0 to 0xFFFF) >");
scanf("%x",&x);
/* виділення складових частин */
x=(UnitStateWord>>12)&0xD;
t=(UnitStateWord>>10)&0x3;
d=(UnitStateWord>>9)&1;
n=UnitStateWord&0x1FF;
/* виведення результатів */
putchar('\n');
printf("type of bias=%d\n",t);
printf("direction of the shift=%d\n",d);
printf("number of bits shift =%d\n",n);
getch();
return 0;
}
6. При тестуванні програми на екран було виведено таке:
7. Висновки
При виконанні лабораторної роботи вивчені побітові операції мови C.