Przejdź do głównej zawartości

Konwersja z systemu 10 na 16 [dec2hex]

1.
Typowe podejście do konwersji między systemem decymalnym a innymi systemami liczbowymi. Zapamiętujemy resztę z dzielenia liczby dziesiętnej przez liczbę podstawę docelowego systemu (w tym przypadku 16) (iDec%16) , następnie dzielimy liczbę całkowicie przez podstawę docelowego systemu liczbowego (iDec /= 16). Powtarzamy tę czynność dopóki liczba dziesiętna nie stanie się zerem (while (iDec)).

#include <iostream>
 
using namespace std;
 
int main() {
    int iDec;
    string sHex;
    string sTmp = "0123456789ABCDEF";
    cin >> iDec;
    while (iDec){
        sHex = sTmp[iDec%16] + sHex;
        iDec /= 16;
    }
    cout << sHex;
    return 0;
}

Kolejne otrzymywane reszty powinny wchodzić na początek generowanej liczby stąd zapis:
sHex = sTmp[iDec%16] + sHex;
Dzięki zmiennej pomocniczej sTmp dostajemy odpowiednią "cyfrę" bez dodatkowej analizy otrzymanej reszty.

2.
Wykorzystując stringstream 

#include <iostream>
#include <sstream>
 
using namespace std;
 
int main() {
    int iDec;
    cin >> iDec;
    string sHex;
    stringstream sTmp;
    sTmp.clear();
    hex(sTmp);
    uppercase(sTmp);
    sTmp << iDec;
    sTmp >> sHex;
    cout << sHex;
    return 0;
}



Popularne posty z tego bloga

[C++]Konwersja systemu dziesiętnego na binarny [dec2bin, dec2u2]

Konwersja między systemami liczbowymi była już poruszana w tym serwisie tym razem zajmę się kodem U2. Inaczej zwany uzupełnieniem do 2. Opis tego systemu pojawił się w kontekście wstępu do programowania w języku Python [ tutaj ]. Prosty program tzw. szkolny zamiany nieujemnej liczby dziesiętnej na jej postać binarną: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <iostream> using namespace std; int main () { int liczba; cin >> liczba; string wynik; while (liczba){ wynik = (liczba % 2 ? "1" : "0" ) + wynik; liczba /= 2 ; } cout << wynik; return 0 ; } Poniżej prezentuję kod programu, który zawiera trzy metody rozwiązania problemu jakim jest wyświetlenie użytkownikowi reprezentacji u2 podanej przez niego liczby dziesiętnej. Pierwsza z nich wywodzi się z typowego algorytmu konwersji systemu dec do u2: 1. przedstaw bezwzględną wartość liczby dziesiętnej w postaci binarnej, 2. dodaj na początek

Python - lekcja 005

Spis treści - zamiana całkowitych liczb dziesiętnych na ich odpowiedniki w innych systemach liczbowych (algorytm), - ujemne liczby całkowite w systemie binarnym (ZM, U1, U2, algorytm, formatowanie stringów, rzutowanie ze zmianą systemu liczbowego) [dec2bin, dec2ZM, dec2U1, dec2U2] - zadania.