Binarny system liczbowy

Kategoria: Zadania z programowania

System binarny (dwójkowy) – jest podstawowy system liczbowy spotykany w informatyce i elektronice. Podstawą jest liczba 2. Jego zrozumienie jest niezbędne do zrozumienia podstaw funkcjonowania wielu urządzeń cyfrowych w tym komputerów.

System binarny (dwójkowy)

Liczbę z systemu binarnego na  dziesiętny (i na odwrót) można łatwo zamienić w kalkulatorze Windows. Aby móc to zrobić musisz włączyć kalkulator w trybie „programisty”. Jest to najszybszy sposób na zamianę liczb z systemu dziesiętnego na binarny i odwrotnie.

Warto także znać metodę obliczania liczby posiadając tylko kartkę papieru. Jest to bardzo częste zadanie na maturach z informatyki. Na poniższym obrazku została zaprezentowana zamiana liczby dziesiętnej 42 oraz liczby binarnej 101010 między sobą:

bin

Ręczna zamiana liczby binarnej na dziesiętną

Aby zamienić liczbę binarną na dziesiętną należy zapisać ją od tył. Następnie każdą z cyfr cząstkowych mnożymy przez podstawę systemu binarnego a więc liczbę 2. Ostatnim krokiem jest podniesienie kolejno wszystkich cyfr do potęgi numerując od 0 do n. Zsumowanie ilorazu da nam wynik w postaci dziesiętnej.

Ręczna zamiana liczby dziesiętnej na binarną

Aby zamienić liczbę dziesiętną na binarną ciągle dzielimy ją przez podstawę systemu binarnego – a więc liczbę 2. Za każdym razem zapisujemy resztę z dzielenia. Operację powtarzamy aż dojdziemy do zera. Wynik należy odczytać od tył.

Kod programu w C++ (dwójkowy na dziesiętny)

Konwersję liczby dwójkowej na dziesiętną najlepiej przeprowadzić za pomocą funkcji strtol z biblioteki cstdlib. Przykładowy program:

#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;

int bin2dec (string binarna)
{
    int dziesietna = strtol(binarna.c_str(), NULL, 2);

    return dziesietna;
}

int main()
{
    string liczba;

    cout << "Podaj liczbe binarna:" << endl;
    cin >> liczba;
    cout << bin2dec(liczba) << endl;

    system ("pause >nul");
    return 0;
}

Kod programu w C++ (dziesiętny na dwójkowy)

Konwersję liczby dziesiętnej na dwójkową najlepiej przeprowadzić za pomocą funkcji itoa z biblioteki cstdlib. Przykładowy program:

#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;

string dec2bin (int dziesietna)
{
    char binarna[255];
    itoa(dziesietna, binarna, 2);

    return (string)binarna;
}

int main()
{
    int liczba;

    cout << "Podaj liczbe dziesietna:" << endl;
    cin >> liczba;
    cout << dec2bin(liczba) << endl;

    system ("pause >nul");
    return 0;
}

Komentarze

muttley

Podobny myk jak z itoa można wykonać w drugą stronę.
To zamieni liczbę w binarnym (zapisaną w zmiennej typu string) na dziesiętny
return strtol(liczba.c_str(), NULL, 2);
Ostatni parametr to system w którym zapisana jest liczba, można to zrobić dla dowolnego typu zapisywania liczb (no, myślę że bezpiecznie jest tego używać do końca alfabetu).

Tylko pytanie czy będzie za to max punktów 🙂

Karol

Dzięki za znalezienie błędu.

Pomysł z użyciem itoa jest bardzo dobry i działa dla kilku podstaw, możliwe że go opublikuję.

Ktoś

dziesiętny na dwójkowy nie działa tak jak powinien działać, wypisuje on te liczby ale w odwrotnej kolejności :). Proponuje użycie itoa w taki sposób :D:

int liczba = 1234;
char bin[255];
cout << itoa(liczba, bin, 2) << endl;

Pozdrawiam 🙂

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *