C i przesunięcie bitowe

Witam.

Pytanie początkującego. Jak działa przesunięcie bitowe w C (Keil dla '51)? Tzn. co się dzieje z bitami które wpadają w "puste" bity?

Pisze odczyt temp. z DS18B21 i w MSB na 4 starszych bitach jeżeli są 1111 to jest temp. ujemna, jeżeli 0000 to dodatnia. Więc po odczycie bajtów do tablicy Bd[x] chcę:

n = Bd [1] //przypisać MSB do zmiennej n >>= 4 // przesunąć o 4 bity w prawo if (n == 0x0F) // porównać z 00001111 { minus = 1 } else { minus = 0 }

tylko czy na pewno będę miał zera po lewej? Gdzieś pisało że niekoniecznie będą to zera.

Pozdrawiam.

Reply to
Henry(k
Loading thread data ...

In the darkest hour on Tue, 28 Mar 2006 12:41:37 +0200, Henry(k) snipped-for-privacy@op.pl screamed:

Jeśli o C chodzi - w zależności od typu zmiennej. unsigned - 0, signed - 1. Wybór należy do Ciebie.

Reply to
Artur M. Piwko

In the darkest hour on Tue, 28 Mar 2006 12:41:37 +0200, Henry(k) snipped-for-privacy@op.pl screamed:

Jeśli o C chodzi, to:

Jeśli najstarszy bit będzie równy 0 - wtedy bity z lewej strony uzupełniane będą zawsze zerem. Jeśli najstarszy bit będzie równy 1 - wtedy bity z lewej strony uzupełniane będą - 0 (w przypadku zmiennej unsigned) lub 1 (w przypadku zmiennej signed). Wybór należy do Ciebie.

Reply to
Artur M. Piwko

Użytkownik "Artur M. Piwko" snipped-for-privacy@pu.kielce.pl> napisał w wiadomości news: snipped-for-privacy@beast.tu.kielce.pl...

zmienna bez znaku więc powinno działać jak chcę. Dzięki.

Reply to
Henry(k

Użytkownik "Henry(k)" snipped-for-privacy@op.pl napisał w wiadomości news:e0b3tr$t78$ snipped-for-privacy@atlantis.news.tpi.pl...

&= 0x0F;

e.

Reply to
entroper

Tak, po tej operacji najstarsze 4 bity beda rowne 0.

Reply to
T.M.F.

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.