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?