[C] Manipulowanie bitami


(Patrykbuzowicz) #1

Witam serdecznie,

mój problem dotyczy odczytywania konkretnych bitów ze znaku i zapisywania ich jako liczby całkowitej. Poniższy kod

#define _DRZWI 0xc0


int pobierz_drzwi(char znak)

{

	znak &= _DRZWI;

	znak >>= 6;

	return (int)znak;

}

char znak;

int main(void)

{

	znak = getchar();

	printf("%d",pobierz_drzwi(znak));

	return 0;

}

ma za zadanie pobrać zakodowany w bajcie sygnał, a następnie z dwóch najbardziej znaczących bitów pobrać liczbę całkowitą. Problem polega na tym, że wśród czterech możliwych opcji pojawiają się liczby ujemne, co nie jest zgodne z założeniem. Dla porównania, funkcja, która pobiera liczbę z dwóch następnych bitów działa bez zarzutu. Czemu tak się dzieje?


(Sawyer47) #2

Strzelam, że chodzi o http://pl.wikibooks.org/wiki/C/Operator ... cie_bitowe


(Patrykbuzowicz) #3

Rzeczywiście, bardzo dziękuję.