Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа №13 / bits
.cpp#include "stdio.h"
typedef union utBits
{
unsigned int ax:8;
struct
{
unsigned a0:1;
unsigned a1:1;
unsigned a2:1;
unsigned a3:1;
unsigned a4:1;
unsigned a5:1;
unsigned a6:1;
unsigned a7:1;
} bits;
} TBits;
typedef union
{
int ax:16;
struct
{
unsigned int ll:8;
unsigned int hh:8;
} bytes;
} TBytes;
void printfbinary(int x)
{
TBytes bx;
TBits bbx;
bx.ax=x;
bbx.ax=bx.bytes.hh;;
printf("%d%d%d%d%d%d%d%d ",bbx.bits.a7,bbx.bits.a6,bbx.bits.a5,bbx.bits.a4,bbx.bits.a3,bbx.bits.a2,bbx.bits.a1,bbx.bits.a0);
bbx.ax=bx.bytes.ll;
printf("%d%d%d%d%d%d%d%d",bbx.bits.a7,bbx.bits.a6,bbx.bits.a5,bbx.bits.a4,bbx.bits.a3,bbx.bits.a2,bbx.bits.a1,bbx.bits.a0);
};
void cshl(int *ax,int y)
{
TBytes bax;
TBits bah,bal;
bax.ax=*ax;
bah.ax=bax.bytes.hh;
bal.ax=bax.bytes.ll;
unsigned _t;
for(int i=0;i<y;i++)
{
_t=bah.bits.a7;
bah.bits.a7=bah.bits.a6;
bah.bits.a6=bah.bits.a5;
bah.bits.a5=bah.bits.a4;
bah.bits.a4=bah.bits.a3;
bah.bits.a3=bah.bits.a2;
bah.bits.a2=bah.bits.a1;
bah.bits.a1=bah.bits.a0;
bah.bits.a0=bal.bits.a7;
bal.bits.a7=bal.bits.a6;
bal.bits.a6=bal.bits.a5;
bal.bits.a5=bal.bits.a4;
bal.bits.a4=bal.bits.a3;
bal.bits.a3=bal.bits.a2;
bal.bits.a2=bal.bits.a1;
bal.bits.a1=bal.bits.a0;
bal.bits.a0=_t;
};
bax.bytes.hh=bah.ax;
bax.bytes.ll=bal.ax;
*ax=bax.ax;
};
int main(void)
{
int x;
x=32767;
printf("%d = ",x);
printfbinary(x);
cshl(&x,16);
printf("\n After using cshl(x,y) \n");
printfbinary(x);
printf(" = %d \n",x);
return 0;
};