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

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

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

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

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

Рік:
2012
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Структури даних та алгоритми
Група:
КІ-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:44

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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