Лабораторна робота №1 Програмування, ч3

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2024
Тип роботи:
Лабораторна робота
Предмет:
Програмування алгоритмів цифрової обробки сигналів та зображень

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ / Звіт про виконання лабораторної роботи №1 з дисципліни: “Програмування, частина 3 (Структури даних та алгоритми)” на тему:“ Внутрішнє представлення в пам’яті комп’ютера статичних даних ” Львів 2017 Мета: дослідження внутрішнього представлення в пам’яті комп’ютера даних статичної структури. Постановка задачі Дослідити внутрішнє представлення в пам’яті комп’ютера даних статичної структури. Змінні, які потрібно проаналізувати : bool b = (25*5) % 10 * 12 = 60; unsigned char ch2 = ‘ u ’; unsigned long i5 = 25*352 = 8800; double d2 = Z . X e + Y; d2 = 300.25e + 12; де X = 25, Y = 12; //(дата народження 25.12.1998) Система тестів 1) bool b = (22*5) % 10 * 1=60; Тип bool - логічний тип даних і у пам’яті комп’ютера він представляється одним байтом. Має два стани true або false. В даному випадку він буде мати значення true, так як цьому значенню відповідає значення змінної відмінне від нуля. Внутрішнє представлення змінної bool b в основній пам'яті: 01 2) char ch2 = ‘u’; Тип char - символьний тип даних, який дозволяє представляти символи у кодуванні за ASCII таблицею. В даному випадку це код символа ‘u’. Розмір змінної unsigned char ch2 1 байт Внутрішнє представлення змінної unsigned char ch2 в основній пам'яті: 75 3) unsigned long i5 = 25*352=8800 unsigned long – це беззнаковий чотирьохбайтовий тип даних, в якому значення зберігається у доповняльному коді. 880010 = 0010 0010 0110 00002 = 0000 226016; Внутрішнє представлення змінної unsigned long i5 в пам'яті комп'ютера: 60 22 00 00 4) double d2 = 300.25e + 12 = 300.25 * 1012 = 300250000000000; Переведемо число у 16 та 2 СЧ: 30025000000000010 = 111366918040016 ; 111136698040016 =0001 0001 0001 0001 0011 0110 0110 1001 1000 0000 0100 0000 00002; Необхідно визначити значення m (мантиса), s(знак) та e(експонента). s = 0, бо число додатне. Доповнимо число нулем: 1 0001 0001 0001 0011 0110 0110 1001 1000 0000 0100 0000 0000,02 Нормалізуємо число: 1, 0001 0001 0001 0011 0110 0110 1001 1000 0000 0100 0000 0000 02 * 10101100 Заокруглення: 1, 0001 0001 0001 0011 0110 0110 1001 1000 0000 0100 0000 0000 | 02 1, 0001 0001 0001 0011 0110 0110 1001 1000 0000 0100 0000 0000 2 * 10101100 Тип double займає ВПК 8 байт (64 біт) З них 11 біт виділяється під експоненту, 1 біт під знак числа і решта 52 під мантису. Знайдемо експоненту е = 102310 + 4410 = 106710 = 42B16 = 010 0001 0111 Зборка за схемою: 1біт 11 біт 52 біта  s e m  0 010 0001 0111 1000100010001001101100110100110000000010000000000   100 0010 1111 0001 0001 0001 0011 0110 0110 1001 1000 0000 0100 0000 0000 00002 = 42F11136698040016 Тепер для отримання значення числа ВПК, необхідно обернути його побайтно, бо ВПК числа типу double зберігаються у зворотньому порядку розміщення байт числа. Отже, ВПК (d2) – 00 40 80 69 36 11 F1 4216 Спеціфікація програми #include<math.h> #include<stdio.h> //b,ch2,i5,d2 template<typename T> void showInMemory(T data) { unsigned char *vx = (unsigned char *)(&data); for (int i =0 ; i<sizeof data; i++) printf("%02X ", vx[i]); printf("\n"); } void func(int birthDate, int birthMonth) { bool b = (bool)((birthDate * 5) % 10 * birthMonth); unsigned char ch2 = 'u'; unsigned long i5 = (unsigned long)(birthDate * 352); double d2 = 300.25e+12; showInMemory(b); showInMemory(ch2); showInMemory(i5); showInMemory(d2); } int main(void) { func(25, 12); } Результати виконання програми / Висновок: на даній лаборораторній роботі я дослідив внутрішнє представлення в пам’яті комп’ютера даних статичної структури.
Антиботан аватар за замовчуванням

28.05.2019 17:05-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!