Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Кафедра ЕОМ
/
Звіт
до лабораторної роботи № 1
з дисципліни «Програмування, частина 3 (Структури даних та алгоритми)»
на тему:
«Подання в пам’яті комп’ютера статичних даних базових типів»
Варіант № 5,0
1. МЕТА РОБОТИ
Дослідження внутрішнього подання в пам’яті комп’ютера базових типів даних статичної структури.
2. ПОСТАНОВКА ЗАДАЧІ
2.1 ррррррррр, 23.05.1999
2.2 Дослідити внутрішнє подання в пам’яті комп’ютера даних статичної структури.
Назви змінних для дослідження згідно варіанту: b,ch1,i5,d3
bool b = (день народження * 5) % 10 * місяць народження;
ch1 = перша літера прізвища (велика);
i5 = день народження * 352 ;
d3 = – Z . X e Y, де: X–день народження, Y–місяць народження, Z=X*Y;
3. АЛГОРИТМ РОЗВ’ЯЗАННЯ ЗАДАЧІ
Для дослідження внутрішнього подання в пам’яті комп’ютера базових типів даних статичної структури нам необхідно розробити програму що буде демонструвати внутрішнє подання пам’яті що виділена під досліджуванні змінні.
Алгоритм розв’язання задачі:
1. Взяти дані за адресою досліджуваної змінної та перетворити їх у символьний масив;
2. Вивести отримані дані у шістнадцятковому форматі;
3. Перевірити вихідні дані (Рис. 1.) програми (Додаток А) з ручними розрахунками.
4. СИСТЕМА ТЕСТІВ
4.1. Завдання 1
Досліджувана змінна - bool b.
Очікуваний результат: (23 * 5) % 10 * 5 = 115 % 50 = 1510 ≈ 1 (true)
Кількість байт що виділяється під тип bool – 1, відповідно подання в памяті компютера – 01.
4.2. Завдання 2
Досліджувана змінна - char ch1
Очікуваний результат: ‘N’ в таблиці SCII має номер 7810 = 4Е16
Кількість байт що виділяється під тип char – 1, відповідно подання в памяті компютера – 4Е
4.3. Завдання 3
Досліджувана змінна - unsigned long i5
Очікуваний результат: 23 * 352 = 809610 = 1FA016
Кількість байт що виділяється під тип unsigned long – 8 (в 64х бітній Linux системі), відповідно подання в памяті компютера– 00 00 00 00 00 00 1F A0
4.4.. Завдання 4
Досліджувана змінна - long double d3
Очікуваний результат: -(23 * 5 + 0.23) * 10^5 = -115.23 * 10^5 = = -1152300010 = … FF502C4816
Кількість байт що виділяється під тип long double - 10, відповідно подання в памяті компютера – FF FF FF FF FF FF FF 50 2C 48.
5. РЕЗУЛЬТАТИ ВИКОНАННЯ ПРОГРАМИ
Рис. 1. Результати виконання програми
Висновок: виконуючи лабораторну роботу дослідив внутрішнє подання в пам’яті комп’ютера базових типів даних статичної структури.
Додаток А
#include<stdio.h>
#include<math.h>
template<typename T>
void showInMemory(T data) {
unsigned char *vx=(unsigned char *)(&data);
for (int i=sizeof data;i>0;i--)
printf("%02X ",vx[i-1]);
printf("\n");
}
void func(int birthDate, int birthMonth){
bool b = (bool)((birthDate*5)%10*birthMonth);
char ch1 = 'N';
unsigned long i5 = (unsigned long)(birthDate*352);
long double intDef = birthDate*birthMonth;
long double doubleDef = (long double)birthDate/100;
long double d3 = -1*(intDef+doubleDef)*((long double)pow(10, birthMonth));
showInMemory(b);
showInMemory(ch1);
showInMemory(i5);
showInMemory(d3);
}
int main (void){
func(23,5);
}