Rozbić na bity.

0

Witam.
Czy jest jakaś funkcja pozwalająca rozbić liczbę (np. 1b char) na pojedyncze bity? (np. do tablicy). Z funkcją składającą sobie poradzę sam :) a do pisania tamtej coś mi brakuje zapału (a tym bardziej czasu....).
pzdrv.

0

to sa raczej proste do napisania funkcje..

void rozbij( char *tab, int liczba, int ile_bajtow )
{
  int i;
  ile_bajtow *= 8;
  for( i = 0; i < ile_bajtow; i++ )
  {
     tab[ ile_bajtow - i ] = liczba & 1;
     liczba >>= 1;
  }
}

uzycie:

int asdf = 0x12345678, i;
char tab[ 32 ];
rozbij( tab, asdf, sizeof( asdf ) );
for( i = 0; i < sizeof( asdf ) * 8; i++ ) putchar( tab[i] + '0' );
putchar( '\\n' );
0

Dzieki :)

0

C ma wbudowane mechanizmy do obslugi takich sytuacji :)

typedef struct CBity{
  unsigned FBit0:1;
  unsigned FBit1:1;
  unsigned FBit2:1;
  unsigned FBit3:1;
  unsigned FBit4:1;
  unsigned FBit5:1;
  unsigned FBit6:1;
  unsigned FBit7:1;
}*PBity;

PBity rozbij(unsigned char *ALiczba){
  return (PBity) ALiczba;
}

Odwolanie:
unsigned char Liczba;
PBity Bity;
Bity = rozbij(&Liczba);
Bit0 = Bity->FBit0;
Bit1 = Bity->FBit1;

itp..

1 użytkowników online, w tym zalogowanych: 0, gości: 1