• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

sekwencje bitowe

0 głosów
1,133 wizyt
pytanie zadane 2 maja 2018 w C i C++ przez four Użytkownik (720 p.)
Mam napisać program, który zlicza wystąpienie sekwencji bitowej 101 w drugiej sekwencji podanej przez użytkownika w formacie liczby typu int. Sekwencje mogą się nakładać np dla liczby -1461071188 wynik będzie 7.

Nie do końca wiem jak to zrobić bez użycia tablicy, najpierw zamienić tą liczbę int na binarną, ale jak to później porównać????
komentarz 9 maja 2018 przez four Użytkownik (720 p.)
A jak zmodyfikowac ten program, zeby obie liczby były podawane przez użytkownika??

2 odpowiedzi

+1 głos
odpowiedź 2 maja 2018 przez monika90 Pasjonat (22,940 p.)
edycja 2 maja 2018 przez monika90

Dla typu int to zadanie nie bardzo ma sens, bo reprezentacja liczb ujemnych zależ od implementacji. Ale ma sens dla unsigned i można się obejść bez tablicy

#include <iostream>
 
int main()
{
    unsigned n = 0xA8E9'D2AC;
    int count = 0;
    while (n != 0)
    {
        if ((n & 0b111) == 0b101)
            ++count;
            
        n >>= 1;
    }
            
    std::cout << count << '\n';
}

 

komentarz 2 maja 2018 przez four Użytkownik (720 p.)
A mogłabyś wyjaśnić co dokładnie robi ten program
komentarz 2 maja 2018 przez monika90 Pasjonat (22,940 p.)

(n & 0b111) wyciąga z testowanej liczby trzy najmniej znaczące bity (bity o numerach od 0 do 2). Następnie sprawdzam czy są one równe 0b101, jak są to zwiększam licznik. (0b to przedrostek używany w C++ dla liczb zapisanych w systemie dwójkowym)

n >>= 1; powoduje przesunięcie wszystkich bitów w liczbie n o jedną pozycję w prawo, dzięki temu w następnym obiegu pętli sprawdzona zostanie następna porcja trzech bitów.

komentarz 2 maja 2018 przez four Użytkownik (720 p.)

Właśnie nie rozumiem dlaczego taka operacja (n & 0b111 ) , czy to może być porównane z samymi zerami na przykład???

+1 głos
odpowiedź 2 maja 2018 przez Knayder Nałogowiec (37,640 p.)
Operatory binarne.
http://coliru.stacked-crooked.com/a/bcdf11316fe8336a
Mój sposób może nie jest najlepszy, ale działa.

Podobne pytania

0 głosów
2 odpowiedzi 587 wizyt
pytanie zadane 10 kwietnia 2020 w C i C++ przez p4wix Obywatel (1,040 p.)
0 głosów
1 odpowiedź 250 wizyt
pytanie zadane 6 sierpnia 2022 w C i C++ przez RufinB Bywalec (2,020 p.)
0 głosów
0 odpowiedzi 579 wizyt
pytanie zadane 10 sierpnia 2020 w C i C++ przez fortuna Początkujący (310 p.)

93,604 zapytań

142,529 odpowiedzi

322,997 komentarzy

63,092 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...