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

question-closed C++ operacje bitowe

42 Warsaw Coding Academy
0 głosów
612 wizyt
pytanie zadane 4 kwietnia 2020 w C i C++ przez p4wix Obywatel (1,040 p.)
zamknięte 4 kwietnia 2020 przez p4wix

Cześć mam problem z zadaniem dotyczącym operacji bitowych w cpp. Motyw tego zadania to wyświetlanie liczby w postaci binarnej bez zer wiodących czyli dla wprowadzonej 5 wyświetli 101, a i nie można korzystać z tablic.

To mój dotychczasowy kod zakładam ze problem jest w liniach 16-18, może nie do końca to rozumiem ale wg mnie powinno być tak że jeżeli wchodzi do ifa gdy znalazło pierwszą jedynkę to wyświetla nam tą jedynkę a później każdą kolejną liczbę binarną zgodnie z sumą.

#include <iostream>

using namespace std;


int main()
{
   int value;
   cin >> value;

   bool first_one = false;
   for (unsigned int mask = 0x80000000; mask > 0; mask = mask >> 1) {
      if ((value bitand mask) and (!(first_one))) {
         first_one = true;
      }
      if (first_one) {
         cout << (value bitor mask);
      }
   }

}

 

komentarz zamknięcia: Otrzymałem odpowiedz na moje pytanie
komentarz 4 kwietnia 2020 przez kalczur Gaduła (4,320 p.)
Do wykonania tego zadania wystarczy dzielenie modulo i pętla. Dla wprowadzonej 5:
5%2 => 1
2%2 => 0
1%2 => 1
Czytane od dołu w górę: 101.

Inny przykład, liczba 20:
20%2 => 0
10%2 => 0
5%2  =>  1
2%2  =>  0
1%2  =>  1
Odpowiedź: 10100.

2 odpowiedzi

0 głosów
odpowiedź 4 kwietnia 2020 przez tangarr Mędrzec (155,180 p.)
wybrane 4 kwietnia 2020 przez p4wix
 
Najlepsza

Zastanów się co robi operacja

value bitor mask

Zamiast sumy bitowej powinieneś wykonać iloczyn bitowy.

value bitand mask

Jednak to jeszcze nie koniec.

Jeżeli otrzymana wartość jest różna od zera wypisz 1. W przypadku zera wypisz 0.

komentarz 4 kwietnia 2020 przez p4wix Obywatel (1,040 p.)
tak, masz racje błąd u mnie polegał na tym że nie wiem czemu myślałem że w pętli przesuwamy 0 a nie jedynkę dlatego pomyślałem o sumie. Dzięki
0 głosów
odpowiedź 4 kwietnia 2020 przez j23 Mędrzec (195,240 p.)
cout << ((value bitor mask) ? '1' : '0');

 

komentarz 4 kwietnia 2020 przez p4wix Obywatel (1,040 p.)
dzięki za odpowiedź tylko muszę tam użyć bitand wtedy działa, bo tak to mi wypisywało same jedynki
komentarz 4 kwietnia 2020 przez j23 Mędrzec (195,240 p.)
Faktycznie, nie zauważyłem ;)

Podobne pytania

0 głosów
1 odpowiedź 1,182 wizyt
pytanie zadane 4 kwietnia 2020 w C i C++ przez tomes235 Początkujący (320 p.)
0 głosów
2 odpowiedzi 525 wizyt
pytanie zadane 10 kwietnia 2020 w C i C++ przez p4wix Obywatel (1,040 p.)
0 głosów
2 odpowiedzi 434 wizyt
pytanie zadane 8 listopada 2015 w C i C++ przez Quiku Obywatel (1,370 p.)

93,382 zapytań

142,381 odpowiedzi

322,539 komentarzy

62,738 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...