DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

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

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

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Лабораторна робота №1 з дисципліни: "Програмування. Частина III. Структури даних та алгоритми" Тема: "Подання в пам’яті комп’ютера статичних даних базових типів" Львів 2016 МЕТА РОБОТИ Дослідження внутрішнього подання в пам’яті комп’ютера базових типів даних статичної структури. ТЕОРЕТИЧНІ ВІДОМОСТІ Охарактеризуємо типи даних мови С++, які відіграють важливу роль в обробці даних. Під типом даних розуміють множину припустимих значень цих даних і множину дозволених операцій над ними. Водночас тип даних визначає і розмір пам'яті, що займають змінні і константи даного типу. Кожен тип даних має ім'я (ідентифікатор). Пам'ять не виділяється для типу даних, а виділяється для розміщення змінної або константи. У мові С++ виділяють наступні категорії типів: базові типи даних; похідні типи. Базові типи мають імена, які є ключовими словами мови. До базових типів належать: скалярні типи і порожній тип — void. Тип void не має значення і введений для опису функцій, які не повертають значень, та для деяких інших цілей. Скалярні типи поділяються на цілочисельні та дійсні типи. Логічний тип, символьні і цілі типи даних є цілочисельним типом, для якого визначені всі операції з цілими числами. Похідні типи визначаються на основі базових типів. Похідні типи поділяються на скалярні і структурні (агрегатні). До скалярних похідних типів належать: перерахування (enum — enumeration) — множина поіменованих цілих значень; вказівники (ім'я_типу *); посилання (ім'я_типу &). Структурні типи: масиви (тип_елементу ім'я_масиву[число_елементів]); структури (struct); об'єднання (union), класи (class). Дані в програмі можна розділити на змінні і константи. Перед використанням змінні і константи повинні бути оголошені за допомогою оператора оголошення. Ключове слово const вказує, що записані праворуч ідентифікатори є константами (константними змінними). При цьому значення константи задається обов'язково і у програмі змінюватися не може. Крім константних змінних, константи можуть задаватися у вигляді літеральних (самовизначених) констант . Логічні змінні типу bool можуть приймати одне з двох значень: false (хиба) та true (істина). За визначенням false рівне 0, a true рівне 1. Логічні змінні широко використовуються в операціях порівняння, логічних операціях і логічних виразах. Розмір змінної залежить від реалізації, але звичайно складає 2 байти. Приклад оголошення: bool reload = false, in_range = true; Для явного задання діапазону можна використовувати модифікатори signed, unsigned. Змінні і константи цілих типів також можуть оголошуватись за допомогою модифікаторів signed і unsigned. При використанні модифікаторів short і long дозволяється опускати ім'я int. Типи з плаваючою точкою або дійсні типи представлені трьома модифікаціями, що характеризують точність подання дійсних чисел: float — одиничної точності; double — подвійної точності; long double — розширеної точності. Таблиця 2. Характеристики основних типів даних мови С++ Ім'я типу Розмір пам'яті, байтів (16/32-розрядна) Діапазон значень для 16-розрядної архітектури  [signed] char 1 -128 127  unsigned char 1 0 255  [signed] short [int] 2 -32 768 32 767  unsigned short [int] 2 0 65 535  [signed] int машинне слово -32 768 32 767  unsigned int машинне слово 0 65 535  [signed] long [int] 4 -2 147 483 648 2 147 483 647  [unsigned] long [int] 4 0 4 294 967 295  float 4 3.4e-38 3.4e38  double 8 1.7e-308 1.7e308  long double 10 3.4e-4932 3.4e4932   ВИБІР ІНДИВІДУАЛЬНОГО ЗАВДАННЯ (день народження студента) % 6 = 6 % 6 = 0 (місяць народження студента) % 5 = 2 % 5 = 2 Завдання до (0,2) варіанту: Дослідити внутрішнє подання в пам’яті комп’ютера даних статичної структури для 4-х змінних : b,ch2,i6,d3 bool b b = (день народження * 5) % 10 * місяць народження b = (6 * 5) % 10 * 2 = 0 bool займає 1 байт. Внутрiшнє придставлення змiнної b(bool): 00 unsigned char ch2 ch2 = друга літера = ‘A’ = 9710 = 6116 unsigned char займає 1 байт. Внутрiшнє придставлення змiнної ch2(unsigned char ): 61 long i3 i3 = день народження * 215 = 6 * 215 = 129010 129010 = 50A16=0000 0000 0000 0000 0000 0101 0000 10102 – в прямому коді long займає 4 байта. В пам’яті комп’ютера буде зберігатися у зворотному порядку розміщення байт числа Внутрiшнє придставлення змiнної i3(long ): 0a 05 00 00 long double d3 X – день народження, Y – місяць народження, Z = X * Y d3 = – Z . X e Y d3 = -12.6e2 long double займає 8 байтів. знак – 1 біт порядок – 11 біт мантиса – 52 біта знак дорівнює 1 s(1біт) е(11 біт) m(52 біта)  1 10000001001 0011 1011 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000  мантиса = 12.6 * 10210 =126010 = 10011101100.02 = 1. 0011101100* 101010 порядок = 1023 + 10= 103310 = 100000010012 1100 0000 1001 0011 1011 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 00002 = C0 93 B0 00 00 00 00 0016 d3 = C0 93 B0 00 00 00 00 0016 В пам’яті комп’ютера буде зберігатися у зворотному порядку розміщення байт числа Внутрiшнє придставлення змiнної d3(long double ): 00 00 00 00 00 b0 93 C0 Код програми: #include <iostream> #include <stdio.h> #include <conio.h> using namespace std; int main() { setlocale(LC_ALL, "Russian"); bool b = 6 * 5 % 10; unsigned char ch2 = 'a'; unsigned i3 = 6 * 215; long double d3 = -12.6e2; unsigned char *vb = (unsigned char *)(&b); cout << "Внутрiшнє представлення змiнної b(bool): "; for (int i = 0; i<sizeof(b); i++) printf("%02x ", vb[i]); printf("\n"); vb = (unsigned char *)(&ch2); cout << "Внутрiшнє представлення змiнної ch2(signed char): "; for (int i = 0; i<sizeof(ch2); i++) printf("%02x ", vb[i]); printf("\n"); vb = (unsigned char *)(&i3); cout << "Внутрiшнє представлення змiнної i3(long): "; for (int i = 0; i<sizeof(i3); i++) printf("%02x ", vb[i]); printf("\n"); vb = (unsigned char *)(&d3); cout << "Внутрiшнє представлення змiнної d3(long double): "; for (int i = 0; i<sizeof(d3); i++) printf("%02x ", vb[i]); _getch(); return 0; } Скріншот виконання: Висновок У цій лабораторній роботі я навчився визначати кількість біт, які необхідні для пердставлення різних типів даних в пам'яті комп’ютера, визначити розмір вказівника і адреси на ці типи
Антиботан аватар за замовчуванням

28.05.2019 17:46

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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