- •Лабораторна робота № 1 Перетворення типів даних
- •1. Мета роботи
- •2. Теоретичні відомості
- •3. Порядок виконання роботи
- •4. Завдання на лабораторну роботу
- •5. Вибір індивідуального завдання
- •6. Вимоги до оформлення звіту
- •Мета роботи.
- •7. Контрольні питання
- •Постановка задачі
- •Завдання 1
- •Завдання 2
- •4. Додаток
Завдання 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 0016
ВПК: 00 00 00 00 00 E0 71 6016
Представлення змінної v0
char v0=*reinterpret_cast<char*> (&x) +3;
intx = 0x0712;
xВПК: 00 00 12 0716
v0ВПК: 0716
Представлення змінної v5
char v4 = *static_cast<char>(x)+22;
Представлення змінної w3
shortw3= *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 0016
ВПК: 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
shortw6= *(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 0016
ВПК: 00 E0 71 6016
X ВПК: 60 0016
Число = 00 6016 = 0000 0000 0110 00002
1111 1111 1001 11112
+ 1
1111 1111 1010 00002
FFA016 = 6544010
w6 = 6544010 + 1310 = 6545310
4. Додаток
#include<iostream>
#include<conio.h>
usingnamespacestd;
voidmain()
{
//ЗАВДАННЯ №1
char x0=0;
unsignedint x1=7;
signedshortint x2=2;
unsignedint x3=3;
signedshortint x4=4;
char x5=5;
unsignedchar x6=6;
unsignedchar x7=7;
char x8=8;
unsignedchar x9=9;
signedint x10=10;
unsignedshortint x11=11;
/* 1 */
x1 = x1 - 0xFFFFFFFA;
unsignedchar _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;
unsignedchar _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;
unsignedchar _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;
unsignedchar _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);
unsignedchar _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");
unsignedchar _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");
unsignedchar _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");
unsignedchar _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();
}
