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