Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа №13 / OECM
.CPP#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
class myBits16{
public:
union {
int x;
struct{
int l:8;
int h:8;
}b;
}a;
short int getBit(int);
void changeBit(int);
void regroup(void);
myBits16(void);
~myBits16(void);
};
myBits16 :: myBits16()
{
};
short int myBits16 :: getBit(int pos)
{
return (a.x>>(15-pos))&1;
};
void myBits16 :: regroup (void)
{
int t;
t=a.b.h;
a.b.h=a.b.l;
a.b.l=t;
};
void myBits16 :: changeBit(int pos)
{
a.x^=1<<pos;
};
myBits16 :: ~myBits16(void)
{
};
void realInfo(myBits16 real)
{
int i;
printf("ax = %d (",real.a.x);
for(i=0;i<16;i++)
printf("%s%d",(i==8?" ":""),real.getBit(i));
printf(")\n ah = %d (",real.a.b.h);
for(i=0;i<8;i++)
printf("%d",real.getBit(i));
printf(")\n al = %d (",real.a.b.l);
for(i=8;i<16;i++)
printf("%d",real.getBit(i));
printf(")\n");
};
int main()
{
clrscr();
randomize();
class myBits16 real;
for(char k;k!=27;k=getch())
{
clrscr();
printf("===Program OECM v1.4 (for working with bits)===\n");
printf("Enter real: ");
scanf("%d",&real.a.x);
realInfo(real);
printf("______________________________\n");
if(real.a.b.l<0)
real.regroup();
realInfo(real);
printf("______________________________\n");
real.changeBit((real.a.b.l)%8);
realInfo(real);
printf("repeat start? (ESC-No,AnyKey-Yes)");
};
return 0;
};