[C] Manipulowanie bitami

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?

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

Rzeczywiście, bardzo dziękuję.