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

question-closed C++ operacje bitowe

Aruba Cloud - Virtual Private Server VPS
0 głosów
598 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,140 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,147 wizyt
pytanie zadane 4 kwietnia 2020 w C i C++ przez tomes235 Początkujący (320 p.)
0 głosów
2 odpowiedzi 521 wizyt
pytanie zadane 10 kwietnia 2020 w C i C++ przez p4wix Obywatel (1,040 p.)
0 głosów
2 odpowiedzi 424 wizyt
pytanie zadane 8 listopada 2015 w C i C++ przez Quiku Obywatel (1,370 p.)

93,326 zapytań

142,323 odpowiedzi

322,391 komentarzy

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...