Wpis z mikrobloga

mirki poratujcie w C bo jest 5 rano a ja mi się kawa skończyła: mam tablicę uint8t tablica[10] (10 elementów 8bitowych) jak szybko obliczyć/sprawdzić czy liczba (w całej tablicy razem) bitów równych 1 jest parzysta? Przy czym szybko = mam mało wolnych cykli cpu, nie mogę się zabawiać w przemielenie 80 bitów jeden za drugim ;)

Nie chodzi mi o to, czy
liczby_ są parzyste, tylko muszę wiedzieć czy mam parzystą liczbę 1 (czyli tyle samo zer co jedynek)

#avr #gcc #programowanie #arduino
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Solitary_Man: taka praca ;)

Pytam, bo na to jest jakiś sposób, i może ktoś kojarzy, a ja nie mogę sobie przypomnieć ;) Coś z xorem czy czy jakoś taki... a mam tylko 12-17 wolnych cykli cpu na to..
  • Odpowiedz
tylko muszę wiedzieć czy mam parzystą liczbę 1 (czyli tyle samo zer co jedynek)


Parzysta liczba jedynek, a tyle samo zer co jedynek to dwa zupełnie różne zadania. Zdecyduj się.

A jak z pamięcią? Nie mógłbyś zmapować poprawnych wartości dla każdego bajta?
  • Odpowiedz
hm, a coś mi takiego przychodzi do głowy:

- jak sprawdzić np liczbę zer (lub jedynek) czy jest parzysta w jednym bajcie? wystarczyło by bit do bitu porównać XOR, tzn 1 z 2, 3 z 4, 5 z 6 , 7z8 = wynik to 4 bity, wystarczy znów te 4 bity porównać xor = wynik 2 bity, xor ich - i jesli 0 = liczba zer/jedynek parzysta

- można też inaczej, jedno-po drugim: xor

-
  • Odpowiedz