Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
/
Кафедра ЕОМ
Лабораторна робота №1
"Представлення в пам’яті комп’ютера
цілих та дійсних типів даних"
МЕТА РОБОТИ
Дослідження внутрішнього представлення в пам’яті комп’ютера базових типів даних статичної структури.
Постановка задачі
І. Дослідити внутрішнє представлення в пам’яті комп’ютера цілих та дійсних типів даних.
Int i1=75
Додатнє число 75 типу int в пам'яті комп’ютера зберігається в прямому двійковому коді і займає 4 байти: 7510=4B16=10010112 0000 0000 0000 0000 0000 0000 0100 1011
В пам’яті комп’ютера цілі числа зберігаються у зворотному порядку розміщення байт числа:
0100 1011 0000 0000 0000 0000 0000 0000
Результат в 16-ковій системі числення: 4B 00 00 00.
Int i2= -375
Від'ємне число -375 типу long int в пам'яті комп’ютера зберігається в доповняльному двійковому коді і займає 4 байти: - 37510 = - 18116 = - 0001 0111 01112
0000 0000 0000 0000 0000 0001 0111 0111 - прямий код;
1111 1111 1111 1111 1111 1110 1000 1000 - обернений код;
+ 1
1111 1111 1111 1111 1111 1110 1000 1001 - доповняльний код;
F F F F F E 8 9 - в 16- ковій системі числення
В пам’яті комп’ютера зберігається у зворотному порядку розміщення байт числа:
1000 1001 1111 1110 1111 1111 1111 1111
Результат в 16- ковій системі числення: 89 FE FF FF
Float f1=114.9710
Перевід цілої частини:
114\16=7(залишок 2)
11410=7216
Перевід дробової частини
0,97*16=15.52
0,52*16=8.32
0,32*16=5.12
0,12*16=1.92
0,92*16=14.72
0,9710=F851E16
114.7210=72,F851E 16=0111 0010,1111 1000 0101 0001 1110 2
Нормалізація: 1,11 0010 1111 1000 0101 0001 11102 * 100110
Заокруглення:
1, 11 0010 1111 1000 0101 0001 111
Визначення мантиси: m= 11 0010 1111 1000 0101 0001 111
Визначення зміщеного порядку: е = 12710 + 610 = 13310 = 85 16 = 1000 0101 2
Визначення знакового розряду: s=0 (бо число додатнє).
Зборка за схемою:
s
e
M
0
1000 0101
110 0101 1111 0000 1010 0100
В 16- ковій системі числення: 0100 0010 110 0101 1111 0000 1010 0100
В пам’яті комп’ютера буде зберігатися у зворотному порядку розміщення байт числа:
1010 0100 1111 0000 1110 0101 0100 0010
A4F0E542
Результат в 16- ковій системі числення: A4F0E542
Float f2= -229.94
Перевід цілої частини:
229\16=14(залишок 5)
22910=E516
Перевід дробової частини:
0,94*16=15.04
0,04*16=0.64
0,64*16=10.24
0,24*16=3.84
-229,9410= -E5,F0A316=1110 0101,1111 0000 1010 00112
Нормалізація: 1.110 0101 1111 0000 1010 00112 * 10111
Визначення мантиси: m=110 0101 1111 0000 1010 0100
Визначення зміщеного порядку: е = 12710 + 710 = 13410 = 86 16 = 1000 0110 2
Визначення знакового розряду: s=1 (бо число від`эмне).
S
e
m
1
1000 0110
110 0101 1111 0000 1010 0100
В 16-й системі числення:1100 0011 0110 0101 1111 0000 1010 0100
В пам’яті комп’ютера
1010 0100 1111 0000 0110 0101 1100 0011
A4F065C3
Результат в 16- ковій системі числення: A4F065C3
5. PЕЗУЛЬТАТ ВИКОНАННЯ ПРОГРАМИ :
/
ВИСНОВКИ
На цій лабораторній роботі я дослідив внутрішнє представлення в пам’яті комп’ютера базових типів даних статичної структури. Виконуючи цю лабораторну роботу, я зрозумів як представлені числа пам’яті комп’ютера: в знакових типах лівий біт використовується для зберігання знака числа (0 – плюс, 1 – мінус). Решта бітів містять числове значення. В беззнакових типах всі біти використаються для числового значення. За замовчуванням всі цілочисельні типи вважаються знаковими. Важливим для мене було те, що в пам’яті комп’ютера цілі числа зберігаються у зворотному порядку розміщення байт числа.
ДОДАТКИ
Текст набраної мною програми :
#include<stdio.h>
#include<conio.h>
//using namespace std;
int main (void)
{
//представлення числа і1;
int i1=75;
unsigned char *vi1=(unsigned char *)(&i1);//посилання на число
printf("\ni1= ");
for (int i=0;i<sizeof(i1);i++)
printf("%02X ",vi1[i]); //вивід числа і1;
printf("\n\n");
//представлення числа і2;
int i2=-375;
unsigned char *vi2=(unsigned char *)(&i2); //посилання на число
printf("i2= ");
for (int i=0;i<sizeof(i2);i++) //вивід числа і2;
printf("%02X ",vi2[i]);
printf("\n\n");
//представлення числа f1;
float f1=114.97;
unsigned char *vf1=(unsigned char *)(&f1); //посилання на число
printf("f1= ");
for (int i=0;i<sizeof(f1);i++) //вивід числа f1;
printf("%02X ",vf1[i]);
printf("\n\n");
//представлення числа f2;
float f2=-229.94;
unsigned char *vf2=(unsigned char *)(&f2); //посилання на число
printf("f2= ");
for (int i=0;i<sizeof(f2);i++) //вивід числа f2;
printf("%02X ",vf2[i]);
printf("\n");
getch();
return 0;
}
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!