Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Объединения_Лекция2.doc
Скачиваний:
10
Добавлен:
22.02.2015
Размер:
98.3 Кб
Скачать

Void hexkod(tip n,char s[])

{//Внутреннее 16-ричное представление целого.

const int L=sizeof(tip);

union {

tip a;

unsigned char u[L];

}q;

int i,m;

unsigned char x;

char alf[]="0123456789ABCDEF";

q.a=n;

i=0; m=L<<1–1;

do

{x=q.u[i++];

s[m--]=alf[x&15];

s[m--]=alf[(x>>4)];

}

while (i<L);

s[L<<1]='\0';

}

Int main ()

{const int Q=sizeof(long double);

int n;

double u;

float v;

bool p;

char t [Q<<3 +1];

cout<< "\n int--n ";

cin>> n;

cout<< "\n double--u ";

cin>> u;

cout<< "\n float--v";

cin>> v;

p=true;

//Вызовы функций

binkod( n,t); //либо binkod<int>(n,t);

cout<< n<< ": "<<t<<endl;

hexkod (n,t); //либо hexkod <int>(n,t);

cout<< n<< ": "<<t<<endl;

binkod( u,t); //либо binkod<double>(u,t);

cout<< u<< ": "<<t<<endl;

hexkod (u,t); //либо hexkod <double>(u,t);

cout<< u<< ": "<<t<<endl;

binkod( v,t); //либо binkod<float>( v,t);

cout<< v<< ": "<<t<<endl;

hexkod (v,t); //либо hexkod<float>(v,t);

cout<< v<< ": "<<t<<endl;

binkod( p,t); //либо binkod<bool>(p,t);

cout<< p<< ": "<<t<<endl;

hexkod (p,t); //либо hexkod <bool>(p,t);

cout<< p<< ": "<<t<<endl;

return 0; }

Результаты работы программы:

1023: 00000000000000000000001111111111

1023: 000003FF

-3.5: 1100000000001100000000000000000000000000000000000000000000000000

-3.5: C00C000000000000

2.5: 01000000001000000000000000000000

2.5: 40200000

1: 00000001

1: 01

//вывод 16-го кода с использованием манипуляторов

cout.precision(8);

q.a=-3.5;

cout.fill('0');

for(int i=7;i>=0;i--)

cout<<hex<<setw(2)<<int(q.u[i])<<' ';

cout<<endl;

//Вывод минимального и максимального значений

cout<<"min - max"<<endl;

for(int i=0;i<6;i++)

q.u[i]=0;

q.u[6]=16;

q.u[7]=0;

cout<<q.a<<" ";

for(int i=0;i<6;i++)

q.u[i]=255;

q.u[6]=239;

q.u[7]=127;

cout<<q.a<<endl;

#include <iostream>

using namespace std;

struct xx

{float y;

int p;

};

//Внутреннее представление структуры типа XX

typedef xx tip;

const int L=sizeof(tip);

union {

tip a;

unsigned char u[L+1];

}q;

void inbitreal (tip n,char s[])

{//Внутреннее 2-ое представление структуры типа XX

int i,j,m;

i=0; //0-oй байт

q.a=n; m=L<<3–1;

do

{unsigned char x;

x=q.u[i];

for( j=0;j<8;j++)

{s[m--]=(x&1)+'0';

x=x>>1;

}

i++;

}

while (i<L);

s[L<<3]=0;

}

void inreal16(tip n,char s[])

{//Внутреннее 16-ричное представление целого.

int i, m;

unsigned char x;

char alf[]="0123456789ABCDEF";

i=0; m=L<<1–1;

do

{x=q.u[i++];

s[m--]=alf[x&15];

s[m--]=alf[(x>>4)];

}

while (i<L);

s[L<<1]='\0';

}

int main ()

{xx n;

char t[L<<3+1];

n.y=1.5; n.p=123;

inbitreal(n,t); cout<< n.y<<” ”<<n.p<< ": "<<t<<endl;

inreal16(n,t); cout<< n.y<<” ”<<n.p<< ": "<<t<<endl;

return 0;

}