Ó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ę:

system-osemkowy-zamiana

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;
}