Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
4
Добавлен:
01.05.2014
Размер:
1.53 Кб
Скачать
#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;
};
Соседние файлы в папке Лабораторная работа №13