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 Визначити, які неявні перетворення типів будуть відбуватись при обчисленнях. З’ясувати, чи відбудуться втрати значимості даних. Хід міркувань підтвердити програмними результатами. В звіті пояснити кожне перетворення і метод, яким воно здійснено. Тестування провести для таки значень змінних: 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:17

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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