Ósemkowy system liczbowy

Kategoria: Zadania z programowania

System ósemkowy – system liczbowy w którym podstawą jest liczba 8. Każda z liczb oktadecymalnych posiada swój odpowiednik dziesiętny. Jest to dość rzadko używany system liczbowy, jednak pytanie o jego znajomość może pojawić się na maturze z informatyki.

System ósemkowy

System ósemkowy (czyli oktalny) jest używany w informatyce stosunkowo rzadko. Przeważnie można trafić na niego adresując wskaźniki. Niemniej jednak przeliczanie na system ósemkowy (i na odwrót) bardzo często trafia się w egzaminach maturalnych. Obrazek poniżej prezentuje ręczną zamianę:

oct

Aby zapisać liczbę oktadecymalnie w języku C++ należy poprzedzić ją cyfrą 0. Przykładowo:

short oct_number = 0377;

Dzięki temu kompilator wie, że nie podaliśmy liczby w systemie dziesiętnym.

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

Aby zamienić liczbę ósemkową na dziesiętną najlepiej użyć funkcji strtol z biblioteki cstdlib. Przykładowy kod:

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

using namespace std;

int oct2dec (string osemkowa)
{
    int dziesietna = strtol(osemkowa.c_str(), NULL, 8);

    return dziesietna;
}

int main()
{
    string liczba;

    cout << "Podaj liczbe osemkowa:" << endl;
    cin >> liczba;
    cout << oct2dec(liczba) << endl;

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

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

Aby zamienić liczbę dziesiętną na ósemkową najlepiej użyć funkcji itoa z biblioteki cstdlib. Przykładowy kod:

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

using namespace std;

string dec2oct (int dziesietna)
{
    char osemkowa[255];
    itoa(dziesietna, osemkowa, 8);

    return (string)osemkowa;
}

int main()
{
    int liczba;

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

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

Komentarze

Magdalena

System ósemkowy to oktalny (ang. octal).

System oktadecymalny to osiemnastkowy (ang. octadecimal).
Podobnie jak szesnastkowy to hexadecimal.

maturzystka

Kocham Cię, serio 😀
Dzięki tej funkcji prawdopodobnie napisałam wczorajszą maturę praktyczną na 100%, a przynajmniej programowanie 🙂
Akurat systemy liczbowe były, a ten sposób jest chyba najszybszy ze wszystkich.
Jeszcze raz dziękuję 😀

Beata

stronka jest naprawdę extra 🙂 jutro mam maturę z informatyki i czuję , że pójdzie mi lepiej niż się spodziewam 🙂

Dodaj komentarz

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