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

[C++] Wyprowadzanie zmiennych w systemie binarnym

+5 głosów
2,364 wizyt
pytanie zadane 5 kwietnia 2015 w C i C++ przez 1110200039910 Gaduła (4,630 p.)

Witam, 

aby wyprowadzić daną w systemie szesnastkowym wystarczy użyć np.:

int a=58;
cout<<hex<<a<<"\n";

Jak mogę szybko wyprowadzić liczbę w systemie binarnym?

5 odpowiedzi

+2 głosów
odpowiedź 5 kwietnia 2015 przez szmq Pasjonat (22,770 p.)
wybrane 5 kwietnia 2015 przez 1110200039910
 
Najlepsza
1. Przechodzimy do funkcji dec_to_bin.

2. Pętla while będzie się wykonywać dopóki liczba będzie różna od zera. Za każdym razem do każdego elementu tablicy jest przypisywana reszta z dzielenia przez 2 czyli 1 albo 0. Następnie liczba jest dzielona przez 2 aż dojdzie do 0. Wtedy przerwiemy pętle

3. Przechodzimy do pętli for i zaczynamy wypisywanie od przedostatniego elementu tablicy (ostatni znak). Przedostatni dlatego że i zwiększało się z każdym obiegiem pętli a j=i-1. Za każdym razem J ma wartość j-- czyli j = j-1. Wypisuje po prostu od ostatniego elementu
komentarz 5 kwietnia 2015 przez 1110200039910 Gaduła (4,630 p.)
Dziękuje za odpowiedź! :)
komentarz 5 kwietnia 2015 przez 1110200039910 Gaduła (4,630 p.)
Pętla kończy się ponieważ 1 podzielone przez 2 jest poprostu "zaokrąglane" do 0 ponieważ użyliśmy inta tak? Całą resztę już rozumiem.
komentarz 5 kwietnia 2015 przez szmq Pasjonat (22,770 p.)
tak, masz racje :)
+3 głosów
odpowiedź 5 kwietnia 2015 przez Valtuil Pasjonat (22,460 p.)

Możesz stworzyć funkcje:

void dec_to_bin(int liczba)
{
  int i=0,tab[31];
 
  while(liczba) //dopóki liczba będzie różna od zera
  {
    tab[i++]=liczba%2;
    liczba/=2;
  }
 
  for(int j=i-1;j>=0;j--)
    cout<<tab[j];
}
 
int main()
{
  dec_to_bin(58);
  cout<<endl;
 
  system("pause");
  return 0;
}

 

komentarz 5 kwietnia 2015 przez 1110200039910 Gaduła (4,630 p.)
Zmieniłem funkcję używając alokacji pamięci tablicy ale nadal nie mam pojęcia jak liczba binarna jest obliczana. Poprostu nie rozumiem użytego algorytmu.
+1 głos
odpowiedź 5 kwietnia 2015 przez arkus Bywalec (2,160 p.)
edycja 5 kwietnia 2015 przez arkus

Możesz użyć biblioteki bitset i rzutować typ:

#include <bitset>
...
	int a = 53, b = -24, c = -315;
	cout << (bitset<8>) a << endl;
	cout << (bitset<8>) b << endl;
	cout << (bitset<20>) c << endl;

/*
Wyniki:
a - 00110101
b - 11101000
c - 11111111111011000101
*/
komentarz 5 kwietnia 2015 przez Ursan Bywalec (2,920 p.)

Dzięki! Twój post tylko utwierdza mnie w przekonaniu, że powinienem wkońcu przerobić STL'a smiley

0 głosów
odpowiedź 5 kwietnia 2015 przez szmq Pasjonat (22,770 p.)

#include <cstdlib>
#include <iostream>
using namespace std;
 
void dec_to_bin(int liczba)
{
  int i=0,tab[31];
 
  while(liczba) //dopóki liczba będzie różna od zera
  {
    tab[i++]=liczba%2;
    liczba/=2;
  }
 
  for(int j=i-1;j>=0;j--)
    cout<<tab[j];
}
 
int main()
{
  int liczba;
 
  cout<<"Podaj liczbę: ";
  cin>>liczba;
 
  cout<<liczba<<" po zamianie na postać binarną: ";
  dec_to_bin(liczba);
  cout<<endl;
 
  system("pause");
  return 0;
}

 

Potrzebna jest funkcja. Edytuj ten kod i dodaj dynamiczną alokacje pamięci. 

0 głosów
odpowiedź 5 kwietnia 2015 przez krecik1334 Maniak (58,390 p.)
Wypisz printfem albo zamien hex na bin.
komentarz 5 kwietnia 2015 przez Bravo555 Gaduła (3,970 p.)

Tak to niestety nie zadziała - hex jest częścią biblioteki iomanipbin nie został zdefiniowany w tej bibliotece.

Podobne pytania

+1 głos
1 odpowiedź 277 wizyt
pytanie zadane 18 października 2021 w Rozwój zawodowy, nauka, praca przez Rykez Początkujący (250 p.)
0 głosów
1 odpowiedź 692 wizyt
pytanie zadane 30 stycznia 2017 w Egzaminy zawodowe przez Sznurek11 Obywatel (1,000 p.)
+1 głos
1 odpowiedź 1,091 wizyt
pytanie zadane 5 lipca 2016 w Rozwój zawodowy, nauka, praca przez XIII Nowicjusz (130 p.)

93,741 zapytań

142,676 odpowiedzi

323,294 komentarzy

63,319 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...