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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” / Кафедра ЕОМ Звіт з лабораторної роботи № 2 з дисципліни: " Програмування. Частина III. Структури даних та алгоритми " "Перетворення типів даних" 1. МЕТА РОБОТИ Дослідження методів та засобів явного та неявного перетворення типів даних. 2.ПОСТАНОВКА ЗАДАЧІ Завдання 1: Визначити, які неявні перетворення типів будуть відбуватись при обчисленнях. З’ясувати, чи відбудуться втрати значимості даних. Хід міркувань підтвердити програмними результатами. В звіти пояснити кожне перетворення і метод, яким воно здійснено. char x0=0; unsigned int x1=6; 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 v1= static_cast< char > (x)+11); char v5=*reinterpret_cast<char*> (&x) +2; char w0=*(reinterpret_cast<char*>(&y)+2)+12; short w3=*reinterpret_cast<short*>(&y) + 1; 3.АЛГОРИТМ РОЗВ’ЯЗАННЯ ЗАДАЧІ Підключаємо бібліотеки iostream і conio для виводу на консоль і для затримки результату. Створюємо змінні різних типів і присвоюємо їм значення відповідні до варіанту. Робимо дії і присвоюємо змінним x1,x3,x7,x8 і прослідковуємо перетворення типів. Створюємо другі дві змінні x i y. Задопомогою «reinterpret_cast» змінну певно типу присвоюємо змінній іншого типу, і виводимо на консоль в шістнадцятковій десятковій формі і їхнє ANCI значення. Задопомогою функції getch() затримуємо результат на екрані. 4.СИСТЕМА ТЕСТІВ Завдання 1 x1 = x1 – 0xFFFFFFFA unsigned int x1 = 6 ВПК: 06 00 00 00 0xFFFFFFFA ВПК: FAFFFFFF FF FF FF FA16= -610 unsigned int x1 = x1+ (–0xFFFFFFFA)= 6+6=12 Результат: 12 x3 = ’a’ + x0 – x2 signed short int х2 =2 ВПК: 02 00 Символьна константа 'a' - значення 9710=6116 за таблицею ASCII char −> signed short int ВПК: 61 −> 61 00 char х0=0 char−> signed short int ВПК: 00 −> 00 00 signed short 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) signed short int x4=4 signed short int −> int; ВПК: 04 00 −> 04 00 00 00 int −> float ВПК: 04 00 00 00 −> 00 00 80 40 (переведено за допомогою програми з лаб1) char x5=5 а) char −> 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 Представлення змінної v1 char v1= static_cast< char > (x)+11); printf("%d %x %c \n", v1,v1,v1); x = 06 0516 ВПК: 05 06 Char однобайтний тип, беремо 1 байт – 05=0000 0101; v=1; v1+11 =16; - %d –в десятковій формі v1+11 = 16; - %x – в шістнадцятко вій формі, 1610=1016 v1+11 = 16; - %с – в таблиці ASCII №6 це символ ◙ Відповідь: 16 10 ◙ 4.2 Представлення змінної v5 char v5=*reinterpret_cast<char*> (&x) +2; printf("%d %x %c \n", v5,v5,v5); int x=0x0605 x = 06 0516 ВПК: 05 06 Char однобайтний тип, беремо 1 байт + 2 −> 0716=0000 01112 710=716; В ASCII таблиці під №710 знаходиться символ • Відповідь:7 • 4.3 Представлення змінної w0 char w0=*(reinterpret_cast<char*>(&y)+2)+12; printf("%x %lu %ld \n", w0,w0,w0); double y= 0.3; ВПК:00 00 00 00 00 45 D2 A0 (переведено задопомоги програми з лаб1) Char тип який має 1 байта, перемо перший байт– він рівний 0; 0+2+12=1410=E16 Відповідь: E 14 14 4.4 Представлення змінної w3 short w3=*reinterpret_cast<short*>(&y) + 3; printf("%x %u %d \n", w3,w3,w3); double y= -6.5e1= - 65; ВПК: 00 00 00 00 00 12 A2 9E (переведено задопомоги програми з лаб1) (&y)+3) означає що беремо останні 2 байта – A2 9E ВПК: 9E A2 16 = 1001 1110 1010 00102 оскільки перша цифра 1 то число відємне, інвертуємо і додаємо 1, отримуємо 0110 0001 0101 11102= -2492610 -2492610=-615E16 Відповідь: -615E 4291006 -24926 5.Результати програми / ВИСНОВКИ Я навчився досліджувати методи явного і неявного перетворення типів даних; ДОДАТОК Лістинг програми #include <iostream> #include <conio.h> using namespace std; int main() { char x0=0; unsigned int x1=6; 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=0x0605; double y=-6.5e1; char v1= static_cast< char > (x)+11); printf("%d %x %c \n", v1,v1,v1); char v5=*reinterpret_cast<char*> (&x) +2; printf("%d %x %c \n", v5,v5,v5); char w0=*(reinterpret_cast<char*>(&y)+2)+12; printf("%x %lu %ld \n", w0,w0,w0); short w3=*reinterpret_cast<short*>(&y) + 3; printf("%x %u %d \n", w3,w3,w3); getch(); return 0; }
Антиботан аватар за замовчуванням

25.11.2012 18:11-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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