Внутрішнє представлення в пам’яті комп’ютера статичних даних базових типів

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

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

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

Рік:
2015
Тип роботи:
Лабораторна робота
Предмет:
Програмування Частина III Структури даних та алгоритми

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

Міністерство освіти і науки, Національний університет «Львівська Політехніка» Кафедра ЕОМ / Лабораторна робота №1 з дисципліни «Програмування, частина 3(Структури даних та алгоритми)» на тему: «Внутрішнє представлення в пам’яті комп’ютера статичних даних базових типів» Мета роботи: Дослідження внутрішнього представлення в пам’яті комп’ютера даних статичної структури. Індивідуальне завдання(Частина 1.1) (Варіант 03) Дослідити внутрішнє представлення в пам’яті комп’ютера даних статичної структури. Розглянути основні базові і похідні типи даних: bool b = 50; wchar_t ch4=’н’; unsigned short i1=300; long double d3=-168.24e07; Хід роботи 1. Запускаю програму на виконання. / Індивідуальне завдання(Частина 1.2) (Варіант 0) Дослідити внутрішнє представлення в пам’яті комп’ютера статичних даних базових та похідних типів. Тестування провести для заданих значень змінних. st1 , un2 , m3 2. Запускаю програму на виконання. / Висновок: У цій лабораторній роботі я досліджував внутрішнє подання в пам’яті комп’ютера базових типів даних. Текст програми: (Частина 1.1) #include <iostream> #include <stdlib.h> using namespace std; int main() { setlocale(LC_ALL, "ukr"); bool b = 50; unsigned char ch2='a'; unsigned i3=5160; long double d3=-168.24e07; cout << endl; cout << "Представлення типу bool в пам'ятi: "; unsigned char *vb = (unsigned char *)(&b); for (int i = 0; i<sizeof(b); i++) printf("%02X ", vb[i]); printf("\n"); cout << "Представлення типу unsigned char в пам'ятi: "; unsigned char *vch2 = (unsigned char *)(&ch2); for (int i = 0; i<sizeof(ch2); i++) printf("%02X ", vch2[i]); printf("\n"); cout << "Представлення типу unsigned в пам'ятi: "; unsigned char *vi3 = (unsigned char *)(&i3); for (int i = 0; i<sizeof(i3); i++) printf("%02X ", vi3[i]); printf("\n"); cout << "Представлення типу long double в пам'ятi: "; unsigned char *vd3 = (unsigned char *)(&d3); for (int i = 0; i<sizeof(d3); i++) printf("%02X ", vd3[i]); printf("\n"); cout << endl; system("pause"); } (Частина 1.2) #include <iostream> #include <stdlib.h> using namespace std; int main() { setlocale(LC_ALL, "ukr"); typedef bool *vkaz; bool b = true; enum color { BLUE = 2, GREEN = BLUE + 7, // замість X підставити свій місяць народження CYAN, RED, BROWN, GRAY = RED - 24, // замість Y підставити свій день народження YELLOW, WHІTE = 0, MAGENTA, LІGHTGRAY, DARKGRAY = -2, BLACK }; char m3[][2][4] = { { { 1,2,3,4 },{ 5 } },{ { 6,7 } },{ {},{ 8,9 } } }; // Для надання значень елементам масиву m3 використати одну з цифр номера мобільного // телефону (10 цифр, починаючи з коду оператора, тобто 10 останніх цифр номера телефону): m3[2][1][0] = 0, m3[0][0][1] = 6, m3[1][1][2] = 3, m3[0][1][2] = 8, m3[2][1][3] = 1, m3[2][0][0] = 9, m3[1][1][1] = 7, m3[1][0][1] = 0, m3[2][0][1] = 2, m3[2][1][2] = 5; struct str { unsigned s1 : 2 + 1; // замість k1 підставити першу цифру дня народження unsigned : 0; unsigned s2 : 4 + 2; // замість k2 підставити другу цифру дня народження unsigned : 0 + 3; // замість k3 підставити першу цифру місяця народження unsigned s4 : 7 + 4; // замість k4 підставити другу цифру місяця народження int s5; } sr1 = { 1, 3, 10, 62047 }, sr2 = { 0, 2, 14, 59254 }; union { int up1; short up2; double up3; char up4[3][2]; bool up5; color up6; vkaz up7; float up8; str up9; } un1, un2, un3, un4; un2.up3 = 16800; // замість Z підставити значення, обчислене за формулою: un2.up6 = BROWN; // Z = (день народження) * (місяць народження) * 100; struct info { char p1[11]; double p2; short p3; unsigned p4 : 4 + 5; // замість k1 підставити другу цифру дня народження vkaz p5; unsigned : 7 + 3; // замість k2 підставити другу цифру місяця народження } st1 = { "Львiв", 25, 97,17, &b }; // замість слова "Місто" підставити назву свого // міста або села, замість BD - номер будинку, //замість KV - номер квартири struct { info p1; bool p2[3][2][3]; }; cout << "Представлення типу bool в пам'ятi: "; unsigned char *vb = (unsigned char *)(&b); for (int i = 0; i<sizeof(b); i++) printf("%02X ", vb[i]); printf("\n"); cout << endl; cout << "Представлення типу struct в пам'ятi: "; unsigned char *vst1 = (unsigned char *)(&st1); for (int i = 0; i<sizeof(st1); i++) printf("%02X ", vst1[i]); printf("\n"); cout << endl; cout << "Представлення типу union в пам'ятi: "; unsigned char *vun2 = (unsigned char *)(&un2); for (int i = 0; i<sizeof(un2); i++) printf("%02X ", vun2[i]); printf("\n"); cout << endl; cout << "Представлення типу char в пам'ятi: "; unsigned char *vm3 = (unsigned char *)(&m3); for (int i = 0; i<sizeof(m3); i++) printf("%02X ", vm3[i]); printf("\n"); cout << endl; system("pause"); }
Антиботан аватар за замовчуванням

28.02.2016 12:02-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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