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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” / Кафедра ЕОМ Звіт з лабораторної роботи № 2 з дисципліни: " Програмування. Частина III. Структури даних та алгоритми " "Перетворення типів даних" 1. МЕТА РОБОТИ Дослідження методів та засобів явного та неявного перетворення типів даних. 2.ПОСТАНОВКА ЗАДАЧІ Завдання 1: Визначити, які неявні перетворення типів будуть відбуватись при обчисленнях. З’ясувати, чи відбудуться втрати значимості даних. Хід міркувань підтвердити програмними результатами. В звіти пояснити кожне перетворення і метод, яким воно здійснено. wchar_t x0=0; unsigned int x1=26; unsigned long int x2=2; long double x3=3; char x4=4; unsigned long int x5=5; unsigned long int x6=6; double x7=7; unsigned int x8=8; signed long int x9=9; bool x10=10; unsigned long int x11=11; x1=x1-0xFFFFFFFA; x3='a'+x0-x2; x7=x4+x5+x6*0.1; x8=x9+x10-x11*10; Завдання 2 Визначити, які явні і неявні перетворення типів будуть відбуватись. Результати обчислень підтвердити програмними результатами. В звіти пояснити кожне перетворення і кожний отриманий результат Char v3=*(reinterpret_cast<char*> (&x)+1)+11; char *v7=reinterpret_cast<char*> (&x); short w5=*(reinterpret_cast<short*>(&y)+2)+12;short long w2=static_cast<long>(y)+55; 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 x2=2; ВПК: 02 00 00 00 Символьна константа 'a' - значення 9710=6116 за таблицею ASCII char −> int int-> unsigned long int ВПК: 61 −> 61 00 00 00 00 wchar_t х0=0 wchar_t −> unsigned long int Mетод: розширення знаком ВПК: 00 00 −> 00 00 00 00 x3=97+0-2=95 Результат: 95 3. x7 = x4 + x5 + x6 * 0.1 1) 0.1 – типу double ВПК: 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 long int x6=6 unsigned long int −> int ВПК: 06 00 00 00 −> 06 00 00 00 int −> double ВПК: 06 00 00 00 −> 00 00 c0 40 (переведено за допомогою програми з лаб1) double x7= x4 + x5 + x6 * 0.1=4+5+6*0.1=9.6 Результат: 9.6 4. x8 = x9 + x10 – x11*10 1) unsigned long int x11=11; ВПК: 0B 00 00 00 2) х9=9 a) signed long int −> int; ВПК:09 00 −> 09 00 00 00 b)int−>bool; ВПК:09 00 00 00 −> 00 00 00 00 00 00 22 40 c)bool−>long; ВПК: 09 00 00 00 00 00 00 00 3) bool x10=10; ВПК: 0A 00 00 00 00 00 00 00 Результат: char x8 = x9 + x10 – x11*10 x8=9+10-11*10=19-110= -9110=>-5B16 ВПК 5B : 5B 00 00 00 , оскільки - 5B зробивши інверсію та додавши 1 => A5 FF FF FF A5 FF FF FF16 = 429496719610 Результат: 4294967196 4.1 Представлення змінної v3 char v3=*(reinterpret_cast<char*> (&x)+1)+11; printf("%d %x %c \n", v3,v3,v3); Нехай у=*reinterpret_cast<char*> (&x) ВПК int х: 2C 09 00 00 00 char займає 1 байт, маєм що у=2016=0010 1100 , оскільки, знак “+”, отримаєм: 4410+1110=55 Відповідь: 55 37 7 55 – отриманий результат в 10-ій системі числення; 37 – отриманий результат в 16-ій системі числення (3716=5510); '7' – З таблиці ASCII під номером 5510 знаходиться символ '7' ; 4.2 Представлення змінної v7 char *v7=reinterpret_cast<char*> (&x); printf("%d %x %c \n", *v7+1,*v7+2, *v7+3); int x=026110 x = 02611016 ВПК: 48 09 00 00 Char однобайтний тип, беремо 1 байт + 1 −> 4816 = 7210=0100 1000 *v7+1 =73; - %d –в десятковій формі *v7+2 = 74; - %x – в шістнадцятко вій формі, 7410=4A16 *v7+3 = 75; - %с – в таблиці ASCII №75 це символ K Відповідь: 73 4A K 4.3 Представлення змінної w5 short w5=*(reinterpret_cast<short*>(&y)+2)+12; printf("%x %u %d \n", w5,w5,w5); double y=1126.0; short w7=*(reinterpret_cast<short*>(&y)+2)+12 y=*(reinterpret_cast<short*>(&y)+2) ВПК х: 00 00 00 00 00 98 91 40 &y +1 +2 Оскільки, short займає 2 байта, то ВПК у : 00 98 98 0016 = 1001 1000 0000 0000 00002 0110 0111 1111 1111 1111 1 0110 1000 0000 0000 0000 – приймається як знакове, в результаті отримаєм 0110 1000 0000 0000 0000 відповідно воно дорівнює -68 0016 = -2662410 -26624 +12 = -26612 Відповідь:FFFF980c 4294940684 -26612 FFFF980c – отриманий результат в 16-ій системі числення в доповняльному коді (-2661210 => -67F4, оскільки воно відємне, інвертуєм => FFFF980c 16); 4294940684 – отриманий результат в 10-ій системі числення в доповняльному коді(FFFF980c 16=429494068410); -26612– отриманий результат в 10-ій системі числення 4.4 Представлення змінної w2 long w2=static_cast<long>(y)+55 Оскільки, double- дійсне чило а long- ціле, то відкидається дробова частина: 1126.0 −> 1126 і додається 55 1126+55=1181 Відповідь: 49D  1181  1181 49D – отриманий результат в 16-ій системі числення(118110=49D16) ; 1181 – отриманий результат представляється як unsigned long, оскільки тип без знаковий а число додатнє , то залишиться таким же; 1181 – отриманий результат в 10-ій системі числення 5.Результати програми / ВИСНОВКИ Я навчився досліджувати методи явного і неявного перетворення типів даних; ДОДАТОК Лістинг програми #include <iostream> #include <conio.h> using namespace std; int main() { wchar_t x0=0; unsigned int x1=26; unsigned long int x2=2; long double x3=3; char x4=4; unsigned long int x5=5; unsigned long int x6=6; double x7=7; unsigned int x8=8; signed long int x9=9; bool x10=10; unsigned long 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=026110; double y=11.26e+2; char v3=*(reinterpret_cast<char*> (&x)+1)+11; printf("%d %x %c \n", v3,v3,v3); char *v7=reinterpret_cast<char*> (&x); printf("%d %x %c \n", *v7+1,*v7+2, *v7+3); short w5=*(reinterpret_cast<short*>(&y)+2)+12; printf("%x %u %d \n", w5,w5,w5); long w2=static_cast<long>(y)+55; printf("%lx %lu %ld \n", w2,w2,w2); getch(); return 0; }
Антиботан аватар за замовчуванням

18.11.2012 16:53

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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