Перетворення типів даних

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

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

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

Рік:
2011
Тип роботи:
Лабораторна робота
Предмет:
Структури даних та алгоритми
Група:
КІ

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

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Звіт з лабораторної роботи № 2 з дисципліни: “ Програмування. Частина III. Структури даних та алгоритми ” на тему: “Перетворення типів даних” Мета роботи Дослідження методів та засобів явного та неявного перетворення типів даних. Постановка задачі Завдання 1 Визначити, які неявні перетворення типів будуть відбуватись при обчисленнях. З’ясувати, чи відбудуться втрати значимості даних. Хід міркувань підтвердити програмними результатами. В звіті пояснити кожне перетворення і метод, яким воно здійснено. Тестування провести для таки значень змінних: char x0=0; unsigned int x1=7; signed short int x2=2; unsigned int x3=3; signed short int x4=4; char x5=5; unsigned char x6=6; unsigned char x7=7; char x8=8; unsigned char x9=9; signed int x10=10; unsigned short int x11=11; /* 1 */ x1 = x1 - 0xFFFFFFFA; /* 2 */ x3 = 'a' + x0 - x2; /* 3 */ x7 = x4 + x5 + x6 * 0.1; /* 4 */ x8 = x9 + x10 - x11*10; Завдання 2 Визначити, які явні і неявні перетворення типів будуть відбуватись. Результати обчислень підтвердити програмними результатами. В звіті пояснити кожне перетворення і кожний отриманий результат. int x = 0x0712; double y = -7.12; char v0 = *reinterpret_cast<char*> (&x) +3; char v4 = static_cast<char> (x) + 22; short w3 = *reinterpret_cast<short*>(&y)+1; short w6 = *(reinterpret_cast<short*>(&y)+3)+13; Завдання 1 Представлення змінної x1 unsigned int x1=7; x1 = x1 - 0xFFFFFFFA; x1 = 7 – 429496729010 = - 429496728310 = - FFFFFFF316 - FFFFFFF316 = - 1111 1111 1111 1111 1111 1111 1111 00112 1111 1111 1111 1111 1111 1111 1111 00112 п.к. 0000 0000 0000 0000 0000 0000 0000 11002 о.к. +1 0000 0000 0000 0000 0000 0000 0000 1101 д.к. 0 0 0 0 0 0 0 D ВПК: 0D 00 00 0016 Представлення змінної x3 unsigned int x3=3; x3 = 'a' + x0 - x2; 'a' = 9710 = 6116 ВПК: 6116 char -> signed long int ВПК: 61 00 00 0016 char x0=0; ВПК: 0016 char -> unsigned int ВПК: 00 00 00 0016 signed short int x2=2; ВПК: 02 0016 signed short int -> unsigned int ВПК: 02 00 00 0016 x3 = 97 + 0 – 2 = 9510 = 5F16 0000 0000 0000 0000 0000 0000 0101 11112 0 0 0 0 0 0 5 F16 ВПК: 5F 00 00 0016 Представлення змінної x7 unsigned char x7=7; x7 = x4 + x5 + x6 * 0.1; signed short int x4=4; ВПК: 04 0016 signed short int -> unsigned char ВПК: 0416 char x5=5; ВПК: 0516 char -> unsigned char ВПК: 0516 unsigned char x6=6; ВПК: 0616 double = 0.1; 0.1 = 0.1(9)16 = 0.1(1001)2 01.1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 10012 ·10-1 s = 0 e = 1023 – 1 = 102210 = 3FE16 = 011 1111 11102 m = 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 0011 1111 1110 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 10012 3 F E 9 9 9 9 9 9 9 9 9 9 9 9 916 ВПК: 3F E9 99 99 99 99 99 9916 double -> unsigned char ВПК: 0016 x7 = 4 + 5 + 6 * 0.1 = (9.6) = 910 = 916 0000 0000 0000 0000 0000 0000 0000 10012 0 0 0 0 0 0 0 916 ВПК: 0916 Представлення змінної x8 char x8=8; x8 = x9 + x10 - x11*10; unsigned char x9=9; ВПК: 0916 unsigned char -> char ВПК: 0916 signed int x10=10; ВПК: 0A 00 00 0016 signed int -> char ВПК: 0A16 unsigned short int x11=11; ВПК: 0B 0016 unsigned short int -> char ВПК: 0B16 x8 = 9 + 10 – 11*10 = - 9110 = A516 0000 0000 1010 01012 F F A 516 ВПК: A516 Завдання 2 Представлення змінних x, y int x = 0x071216 = 181010; 181010 = 071216 = 0000 0111 0001 00102 ВПК: 12 0716 double y = -7.12; -7.1210 = -7.1E16 = - 0111.0001 11102 = -01.11 0001 11102 * 10^(0010); s = 1 e = 12710 + 210 = 12910 = 8116 = 1000 00012 m = 11 0001 1110 0000 0000 00002 0110 0000 0111 0001 1110 0000 0000 00002 6 0 7 1 E 0 0 016 ВПК: 00 00 00 00 00 E0 71 6016 Представлення змінної v0 char v0=*reinterpret_cast<char*> (&x) +3; int x = 0x0712; x ВПК: 00 00 12 0716 v0 ВПК: 0716 Представлення змінної v5 char v4 = *static_cast<char>(x)+22; Представлення змінної w3 short w3 = *reinterpret_cast<short*>(&y)+1; double y = -7.12; -7.1210 = -7.1E16 = -0111.0001 11102 = -01.11 0001 11102 * 10^(0010) s = 1 e = 12710 + 210 = 12910 = 8116 = 1000 00012 m = 11 0001 1110 0000 0000 00002 0110 0000 0111 0001 1110 0000 0000 00002 6 0 7 1 E 0 0 016 ВПК: 00 E0 71 6016 X ВПК: EO 7116 Число: 71 E016 = 0111 0001 1110 00002 1000 1110 0001 11112 + 1 1000 1110 0010 00002 8 E 2 016 8E2016 = 3638410 w3 = 3638410 Представлення змінної w6 short w6 = *(reinterpret_cast<short*>(&y)+3)+13; double y = -7.12; -7.1210 = -7.1E16 = -0111.0001 11102 = -01.11 0001 11102 * 10^(0010) s = 1 e = 12710 + 210 = 12910 = 8116 = 1000 00012 m = 11 0001 1110 0000 0000 00002 0110 0000 0111 0001 1110 0000 0000 00002 6 0 7 1 E 0 0 016 ВПК: 00 E0 71 6016 X ВПК: 60 0016 Число = 00 6016 = 0000 0000 0110 00002 1111 1111 1001 11112 + 1 1111 1111 1010 00002 F F A 016 = 6544010 w6 = 6544010 + 1310 = 6545310 Висновок На цій лабораторній роботі я дослідив методи та засоби явного та неявного перетворення типів даних. 4. Додаток #include <iostream> #include <conio.h> using namespace std; void main() { //ЗАВДАННЯ №1 char x0=0; unsigned int x1=7; signed short int x2=2; unsigned int x3=3; signed short int x4=4; char x5=5; unsigned char x6=6; unsigned char x7=7; char x8=8; unsigned char x9=9; signed int x10=10; unsigned short int x11=11; /* 1 */ x1 = x1 - 0xFFFFFFFA; unsigned char _x1[sizeof(x1)]; //Початок виведення ВПК x1 cout<<"Sizeof(x1): "<<sizeof(x1)<<endl; cout<<"In PC: "; for(int i=0; i<sizeof(x1); i++) { _x1[i] = *((char*)&x1 + i); printf("%02Lx", _x1[i]); } printf("\n\n"); //Кінець виведення ВПК x1 /* 2 */ x3 = 'a' + x0 - x2; unsigned char _x3[sizeof(x3)]; //Початок виведення ВПК x3 cout<<"Sizeof(x3): "<<sizeof(x3)<<endl; cout<<"In PC: "; for(int i=0; i<sizeof(x3); i++) { _x3[i] = *((char*)&x3 + i); printf("%02Lx", _x3[i]); } printf("\n\n"); //Кінець виведення ВПК x3 /* 3 */ x7 = x4 + x5 + x6 * 0.1; unsigned char _x7[sizeof(x7)]; //Початок виведення ВПК x7 cout<<"Sizeof(x7): "<<sizeof(x7)<<endl; cout<<"In PC: "; for(int i=0; i<sizeof(x7); i++) { _x7[i] = *((char*)&x7 + i); printf("%02Lx", _x7[i]); } printf("\n\n"); //Кінець виведення ВПК x7 /* 4 */ x8 = x9 + x10 - x11*10; unsigned char _x8[sizeof(x8)]; //Початок виведення ВПК x8 cout<<"Sizeof(x8): "<<sizeof(x8)<<endl; cout<<"In PC: "; for(int i=0; i<sizeof(x8); i++) { _x8[i] = *((char*)&x8 + i); printf("%02Lx", _x8[i]); } printf("\n\n"); //Кінець виведення ВПК x8 //ЗАВДАННЯ №2 int x = 1810; double y = -7.12; printf("Dec:\tHex:\tSymbol:\n"); char v0=*reinterpret_cast<char*> (&x) +3; printf("%d %x %c \n", v0,v0,v0); char v4=static_cast<char>(x) + 22; printf("%d %x %c \n", v4,v4,v4); printf("\nHex:\tUns:\tDec:\n"); short w3 = *reinterpret_cast<short*>(&y)+1; printf("%x %u %d \n", w3,w3,w3); short w6=*(reinterpret_cast<short*>(&y)+3)+13; printf("%x %u %d \n", w6,w6,w6); unsigned char _v0[sizeof(v0)]; cout<<"Sizeof(v0): "<<sizeof(v0)<<endl; cout<<"In PC: "; for(int i=0; i<sizeof(v0); i++) { _v0[i] = *((char*)&v0 + i); printf("%02Lx", _v0[i]); } printf("\n"); unsigned char _v4[sizeof(v4)]; cout<<"Sizeof(v4): "<<sizeof(v4)<<endl; cout<<"In PC: "; for(int i=0; i<sizeof(v4); i++) { _v4[i] = *((char*)&v4 + i); printf("%02Lx", _v4[i]); } printf("\n"); unsigned char _w3[sizeof(w3)]; cout<<"Sizeof(w3): "<<sizeof(w3)<<endl; cout<<"In PC: "; for(int i=0; i<sizeof(w3); i++) { _w3[i] = *((char*)&w3 + i); printf("%02Lx", _w3[i]); } printf("\n"); unsigned char _w6[sizeof(w6)]; cout<<"Sizeof(w6): "<<sizeof(w6)<<endl; cout<<"In PC: "; for(int i=0; i<sizeof(w6); i++) { _w6[i] = *((char*)&w6 + i); printf("%02Lx", _w6[i]); } printf("\n"); getch(); } /
Антиботан аватар за замовчуванням

27.11.2012 18:11-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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