Funkcje do zapisu i przetwarzania systemów liczbowych


W opcjach kompilatora ustawić
DODAJ TE POLECENIA (haczyk)
-std=c++11

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <iomanip>
#include <bitset>
using namespace std;

int main(int argc, char** argv) {
        int a = 15; //15 w systemie 16
        int b = 13;
        cout << hex << a << endl;  //wynik f
        //Uzupełnienie zerami na początku liczby szesnastkowej (zawsze para)

        cout << hex //system 16
             << setw(2) //ilość cyfr docelowych
             << setfill('0') //wypełnij brakujące cyfry zerami
             << a << endl; //uzupełnij zerami, czyli 0f
                 
        cout << b << endl; // d dopóki jest hex włączony wypisze w systemie 16. Strumieniem może być plik
        cout << dec << a << endl; //11
       
        cout << oct << a << endl;//17 w ósemkowym
        cout << dec << a << endl;
       
       
        // Zapis w C++ liczb w sysmie 16 tkowym
        int c = 0xff;
        cout << c << endl; //wypisuje tę liczbę w systmie 10
        cout << hex << c << dec <<endl; //bezpieczny zapis
       
        //Zapis w systemie BINARNYM
        int d = 0b00000100; // 00000100
        cout << d <<endl;
       
        //Wypisanie w sysetmie BINARNYM bitset
        cout << bitset<8>(d); //8 cyfr będzie uzupełnione '0'
       
        // Podsumowanie: wprowadzane liczby - dziesiętne, szesnastkowe, binarne
        // Wypisywane: dziesiętne, szesnastkowe (hex), binarne (bitset<>()), ósemkowe (oct)
         
        // W drugą stronę - w STRING jest liczba w innym sysemie: binarny, szesnastkowy i in dowolnym
        string liczbaString = "ffa7";
        char* endptr; // to jest wskaźnik na miejsce, gdzie przy konwersji z systemu czworkowego wystąpi błąd - nieużywana zmienna
        long liczba =  strtol(liczbaString.c_str(), &endptr, 16);
              //^konwersja z systemu 16 do dziesietnego, string (C++) trzeba zamienić na char * (C) funkcja .c_str()
               //zmienna endptr wskazuje na znak w stringu, który nie pasuje do systemu czwórkowego - tu niesprawdzone, bo zakładamy, że dane są poprawne!
     
       
        return 0;
}