Wpis z mikrobloga

#programowanie #jezykc

Mircy mam takie zadania:
1) Napisz funkcję, która dla zmiennej typu unsigned char jeśli jej najmłodszy bit ma wartość 1 wyzeruje 2 najstarsze bity tej zmiennej, a pozostałe bity ustawi na wartość 1

Słabo u mnie z tymi operacjami bitowymi, czekam na jakieś podpowiedzi mądrych mirków.
  • 15
@wytrzzeszcz: Analizuje to co napisałeś, mam jeszcze podobne zadanie:
Jeżeli najstarszy bit to 1 to zaneguj wszystkie pozostale bity, powiedz mi czy dobrze mysle:
if (liczba & (1 << 0) != 0)
{
for (int n = 1; n < 8;n++)
liczba ^= 1 << n;
}
@Gottek: @Gottek: liczba to XOR z przesuwającą się jedynką? działa ale nie jest wydajne
dodatkowo po co 1 przesuwasz o 0 miejsc ? i najstarszy bit to ten po lewej wiec najwiecej warty

Twój kod powinien być
if (liczba & (1<<7) ) // przesówam o 7 i ląduje na 8 bicie 1 (mogę na sztywno wpisać 128)
{
liczba=(~liczba);
}