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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” / Кафедра ЕОМ Звіт з лабораторної роботи № 2 з дисципліни: " Програмування. Частина III. Структури даних та алгоритми " "Перетворення типів даних" 1. МЕТА РОБОТИ Дослідження методів та засобів явного та неявного перетворення типів даних. 2.ПОСТАНОВКА ЗАДАЧІ Завдання 1: Визначити, які неявні перетворення типів будуть відбуватись при обчисленнях. З’ясувати, чи відбудуться втрати значимості даних. Хід міркувань підтвердити програмними результатами. В звіти пояснити кожне перетворення і метод, яким воно здійснено. char x0=0; unsigned int x1=7; signed short int x2=2; signed short int x3=3; signed short int x4=4; char x5=5; unsigned int x6=6; float x7=7; char x8=8; signed short int x9=9; long double x10=10; unsigned int x11=11; x1=x1-0xFFFFFFFA; x3='a'+x0-x2; x7=x4+x5+x6*0.1; x8=x9+x10-x11*10; Завдання 2 Визначити, які явні і неявні перетворення типів будуть відбуватись. Результати обчислень підтвердити програмними результатами. В звіти пояснити кожне перетворення і кожний отриманий результат char *v7=reinterpret_cast<char*>(&x); char v3=*(reinterpret_cast<char*>(&x)+1)+11; long w1 =*reinterpret_cast<long*>(&y)+33; short w6=*(reinterpret_cast<short*>(&y)+3)+13; 3.АЛГОРИТМ РОЗВ’ЯЗАННЯ ЗАДАЧІ Підключаємо бібліотеки iostream і conio для виводу на консоль і для затримки результату. Створюємо змінні різних типів і присвоюємо їм значення відповідні до варіанту. Робимо дії і присвоюємо змінним x1,x3,x7,x8 і прослідковуємо перетворення типів. Створюємо другі дві змінні x i y. Задопомогою «reinterpret_cast» змінну певно типу присвоюємо змінній іншого типу, і виводимо на консоль в шістнадцятковій десятковій формі і їхнє ANCI значення. Задопомогою функції getch() затримуємо результат на екрані. 4.СИСТЕМА ТЕСТІВ Завдання 1 x1 = x1 – 0xFFFFFFFA unsigned int x1 = 26 ВПК: 26 00 00 00 0xFFFFFFFA ВПК: FAFFFFFF FF FF FF FA16= -610 unsigned int x1 = x1+ (–0xFFFFFFFA)= 26+6=32 Результат: 32 x3 = ’a’ + x0 – x2 Unsigned long int х2 =2 ВПК: 02 00 Символьна константа 'a' - значення 9710=6116 за таблицею ASCII char −> int int-> unsigned long int ВПК: 61 −> 61 00 wchar_t х0=0 wchar_t −> unsigned long int ВПК: 00 −> 00 00 unsigned long int x3=’a’+x0-x2=97+0-2=95 Результат: 95 3. x7 = x4 + x5 + x6 * 0.1 1) 0.1 – типу float ВПК: cd cc cc 3d (переведено за допомогою програми з лаб1) char x4=4 double −> int; ВПК: 04 00 −> 04 00 00 00 int −> double ВПК: 04 00 00 00 −> 00 00 80 40 (переведено за допомогою програми з лаб1) unsigned long int x5=5 а) unsigned long int −> int ВПК: 05 −> 05 00 00 00 б) int −> double ВПК: 05 00 00 00 −> 00 00 a0 40 (переведено за допомогою програми з лаб1) 4) unsigned int x6=6 unsigned int −> int ВПК: 06 00 00 00 −> 06 00 00 00 int −> float ВПК: 06 00 00 00 −> 00 00 c0 40 (переведено за допомогою програми з лаб1) float x7 = x4 + x5 + x6 * 0.1=4+5+6*0.1=9.6 Результат: 9.6 4. x8 = x9 + x10 – x11*10 1) unsigned int x11=11 ВПК: 0B 00 00 00 2) х9=9 a)signed short int −> int; ВПК:09 00 −> 09 00 00 00 b)int−>double; ВПК:09 00 00 00 −> 00 00 00 00 00 00 22 40 c)double−>long; ВПК: 09 00 00 00 00 00 00 00 3) long double х10=10; ВПК: 0A 00 00 00 00 00 00 00 Результат: char x8 = x9 + x10 – x11*10 x11*10 11*10=11010=6E16 0110 1110 000…. −> Оскільки знак відємний інвертуємо і додаємо 1−> 1001 001000000…2 −> 92 00 00 00 00 00 00 0016 −> 14610 146+19=165; 16510=A516 – в ASCII коді це є “е” Результат: е 4.1 Представлення змінної v7 char *v7=reinterpret_cast<char*>(&x); printf ("%d %x %c \n", *v7+1,*v7+2,*v7+3); int x=0x0703 x = 07 0316 ВПК: 03 07 Char однобайтний тип, беремо 1 байт – 03=0000 0011; *v=3; *v7+1 =4; - %d –в десятковій формі *v7+2 = 5; - %x – в шістнадцятко вій формі, 510=516 *v7+3 = 6; - %с – в таблиці ASCII №6 це символ ♠ Відповідь: 4 5 ♠ 4.2 Представлення змінної v3 char v3=*(reinterpret_cast<char*>(&x)+1)+11; printf("%d %x %c \n", v3,v3,v3); int x=0x0703 x = 07 0316 ВПК: 03 07 Char однобайтний тип, беремо 1 байт + 1 −> 0716=0000 01112 7+11=1810=1216; В ASCII таблиці під №1810 знаходиться символ ↕ Відповідь:18 12 ↕ 4.3 Представлення змінної w1 long w1 =*reinterpret_cast<long*>(&y)+33; printf("%lx %lu %ld \n", w1,w1,w1); double y= -7.3e1= -73; ВПК:00 00 00 00 00 40 52 C0 (переведено задопомоги програми з лаб1) Long тип який має 4 байта, перемо перших 4 байта – вони рівні 0; 0+33=3310=2116 Відповідь: 21 33 33 4.4 Представлення змінної w6 short w6=*(reinterpret_cast<short*>(&y)+3)+13; printf("%x %u %d \n", w6,w6,w6); double y= -73; ВПК: 00 00 00 00 00 40 52 C0 (переведено задопомоги програми з лаб1) (&y)+3) означає що беремо останні 2 байта – 52 С0 ВПК: С0 52 16 = 1100 0000 0101 00102 оскільки перша цифра 1 то число відємне, інвертуємо і додаємо 1, отримуємо 0011 1111 1010 11102= -1630210 -16302+13= -1628910= FFFFC05F16 4 294 967 295 – 16289=4294951006 Відповідь : FFFFC05F 4294951006 -16302 5.Результати програми / ВИСНОВКИ Я навчився досліджувати методи явного і неявного перетворення типів даних; ДОДАТОК Лістинг програми #include <iostream> #include <conio.h> using namespace std; int main() { char x0=0; unsigned int x1=7; signed short int x2=2; signed short int x3=3; signed short int x4=4; char x5=5; unsigned int x6=6; float x7=7; char x8=8; signed short int x9=9; long double x10=10; unsigned int x11=11; x1=x1-0xFFFFFFFA; x3='a'+x0-x2; x7=x4+x5+x6*0.1; x8=x9+x10-x11*10; cout<<x1<<endl<<x3<<endl<<x7<<endl<<x8<<endl<<"************"<<endl; //int x_2; double y_1; int x=0x0703; double y=-7.3e1; char *v7=reinterpret_cast<char*>(&x); printf ("%d %x %c \n", *v7+1,*v7+2,*v7+3); char v3=*(reinterpret_cast<char*>(&x)+1)+11; printf("%d %x %c \n", v3,v3,v3); long w1 =*reinterpret_cast<long*>(&y)+33; printf("%lx %lu %ld \n", w1,w1,w1); short w6=*(reinterpret_cast<short*>(&y)+3)+13; printf("%x %u %d \n", w6,w6,w6); getch(); return 0; }
Антиботан аватар за замовчуванням

18.11.2012 22:11-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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