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

question-closed C++ operacje bitowe

Object Storage Arubacloud
0 głosów
446 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 (154,860 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 (194,920 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 (194,920 p.)
Faktycznie, nie zauważyłem ;)

Podobne pytania

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

92,568 zapytań

141,420 odpowiedzi

319,618 komentarzy

61,954 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...