МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
/
Кафедра ЕОМ
"Представлення в пам’яті комп’ютера
цілих та дійсних типів даних"
лабораторна робота № 1
з дисципліни
" Програмування. Частина III.
Структури даних та алгоритми "
1.МЕТА РОБОТИ
Дослідження внутрішнього представлення в пам’яті комп’ютера базових типів даних статичної структури.
2.ІНДИВІДУАЛЬНЕ ЗАВДАННЯ НА ЛАБОРАТОРНУ РОБОТУ
Дослідити внутрішнє представлення в пам’яті комп’ютера цілих та дійсних типів даних.
Розглянути наступні базові типи даних:
int i1 , і2;
float f1 , f2;
i1 = 75; і2 = -375;
f1=117.116 ; f2 = -234.232;
3.Алгоритм розв’язання задачі.
Ми повинні показати представлення в пам’яті комп’ютера цілих та дійсних типів даних, з якими оперує наша програма. Алгоритм полягає в впорядкованому зчитуванні байтів збережених у памяті комп’ютера, за допомогою вказівників та посилань.
В па’мяті комп’ютера змінна типу float займає 4 байти, в яких один біт виділяється під знак, 8- під порядок,23- під мантису.
4.Система тестів
4.1
Додатнє число 75 типу int в пам'яті комп’ютера зберігається в прямому двійковому коді і займає 4 байти: 0000 0000 0000 0000 0000 0000 0100 1011
В пам’яті комп’ютера цілі числа зберігаються у зворотному порядку розміщення байт числа:
0100 1011 0000 0000 0000 0000 0000 0000
Результат в 16-ковій системі числення: 4B 00 00 00.
4.2
Від'ємне число -375 типу long int в пам'яті комп’ютера зберігається в доповняльному двійковому коді і займає 4 байти: - 37510 = -17716 = - 2
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- ковій системі числення
В пам’яті комп’ютера зберігається у зворотному порядку розміщення байт числа:
1001 1000 1110 1111 1111 1111 1111 1111
Результат в 16- ковій системі числення: 89 FE FF FF.
4.3
Розглянемо, як в пам'яті комп’ютера зберігається додатнє число 117,116 типу float .
Перевід цілої частини:
117/16=7 остача 5
7/16=0 остача 7
=> 117 10 =75 16
Перевід дробової частини:
0, 116 * 16 = 1,856
0, 856 * 16 = 13,696 (1310 = D16)
0, 696 * 16 = 11,136 (1110 = B16)
0, 136 * 16 = 2,176
0,176 * 16 = 2,816
=> 0,116 10 = 0,1DB22 16
Отже: 117,116 10 = 75, 1DB22 16 = 0111 0101, 0001 1101 1011 0010 0010 2
Нормалізація: 01,11 0101 0001 1101 1011 0010 0010 2 * 100110
Заокруглення:
1,11 0101 0001 1101 1011 0010 0│01
+ 0
1,11 0101 0001 1101 1011 0010 0
Визначення мантиси: m=11 0101 0001 1101 1011 0010 0
Визначення зміщеного порядку: е = 12710 + 610 = 133 10 = 85 16 = 1000 0101 2
Визначення знакового розряду: s=0 (бо число додатнє).
Схема внутрішнього представлення:
s
e
m
1 біт
8 біт
23 біт
Зборка за схемою:
s
e
m
0
1000 0101
110 1010 0011 1011 0110 0100
В 16- ковій системі 0100 0010 1110 1010 0011 1011 0110 01002=42 EA3B 64 16
В пам’яті комп’ютера буде зберігатися у зворотному порядку розміщення байт числа:
0110 0100 0011 1011 1110 1010 0100 0010
Результат в 16- ковій системі числення: 64 3B EA 42
4.4
Представлення змінної f2:
f2=-234.232
Перевід цілої частини:
-23410=-EA16
Перевід дробової частини:
0, 232 * 16 =3,712
0, 712 * 16 = 11,392 (1110 = B16)
0, 392 * 16 = 6,272
0, 272 * 16 = 4,352
0,352 * 16 = 5,96
=> 0.232 10 = 0,3B645 16
Отже: -234.23210 = -EA, 3B64516 = 1110 1010,0011 1011 0110 0100 01012
Нормалізація: 1,110 1010 0011 1011 0110 0100 01012* 100111
Заокруглення:
1,110 1010 0011 1011 0110 0100 │01
+ 0
1,110 1010 0011 1011 0110 0100
Визначення мантиси: m=110 1010 0011 1011 0110 0100
Визначення зміщеного порядку: е = 12710 + 710 = 134 10 = 86 16 = 1000 0110 2
Визначення знакового розряду: s=1
Схема внутрішнього представлення:
s
e
m
1 біт
8 біт
23 біт
Зборка за схемою:
s
e
m
1
1000 0110
110 1010 0011 1011 0110 0100
В 16- ковій системі: 1100 0011 0110 1010 0011 1011 0110 0100= С36A3B6416
В пам’яті комп’ютера буде відображатись наступним чином:
64 3B 6A C3
5.Результати виконання програми.
/
Висновки:
Під час виконання даної лабораторної роботи ми спостерігали представлення даних у памяті комп’ютера, написали програмну реалізацію, яка допомагає спостерігати за зберіганням даних у памяті комп’ютера та вивели результати роботи на екран. Описали представлення цілочисельних та дійсних типів даних у памяті ручними розрахунками. Текст програми поміщений в додаток а також безпосередньо у алгоритм вирішення задачі.
Додатки:
Текст програми:
#include<stdio.h>
#include<conio.h>
#include <iostream>
int main (void)
{
// створення та ініціалізація змінних
int i;
int i1=75;
int i2=-375;
float f1 = 117.116;
float f2 = -234.232;
unsigned char *vi1=(unsigned char *)(&i1);
for (int i=0;i<sizeof(i1);i++)
//вивід змінних
printf("%02X ",vi1[i]);
printf("\n");
unsigned char *vi2=(unsigned char *)(&i2);
for (i=0;i<sizeof(i2);i++)
printf("%02X ",vi2[i]);
printf("\n");
unsigned char *vf1=(unsigned char *)(&f1);
for (i=0;i<sizeof(f1);i++)
printf("%02X ",vf1[i]);
printf("\n");
unsigned char *vf2=(unsigned char *)(&f2);
for (i=0;i<sizeof(f2);i++)
printf("%02X ",vf2[i]);
printf("\n");
getch();
return 0;
}
СПИСОК ЛІТЕРАТУРИ
Грегори К. Использование Visual С++. Специальное издание. - М.: «Диалектика», 1999.
Мешков А.В., Тихомиров Ю.В. Visual С++ и MFC. Пер. с англ. – 2-е изд. перераб. и доп. – СПб.: БХВ - Петербург, 2002. – 1040 с.
Страуструп Б. Язык программирования С++. Третье издание. - М.: «Издательство Бином», 1999.