Hilfe bei Binärcodegenerator



  • Ich versuche ein Konsolenprogramm zu schreiben, dass Dezimalzahlen in Binärzahlen umwandeln kann. Ich weiß bloß nicht wie genau ich das Anfangen soll mit der umrechnung, ich hoffe mir kann wer nen Tipp oder einen Code geben.

    So sollte es ablaufen:

    Bitte gib die Dez. Zahl ein: 
    xxxx
    ENTER
    Binärzahl: xxxx
    

    Soll ne ganz einfach Konsolenanwendung sein, würde mich sehr über evtl. Tipps oder Codes freuen.

    MfG Sacred



  • wenn mcih ne alles täscht, dann:

    //using namespace std blablabla ^^
    int eingabe;
    cin >> eingabe;
    cout << hex << eingabe;
    


  • ich versuhcs mal danke schonmal^^



  • Ja das funktioniert gibt mir die Zahlen aber im Hexadezimalsystem aus ich brauch sie allerdings im Dual-/Binärsystem.

    Beispiel:

    2730=101010101010
    


  • Let's play with std::bitset (Header: <bitset>)!



  • (D)Evil schrieb:

    Let's play with std::bitset (Header: <bitset>)!

    Kannste das pls etwas genauer erläutern, ich porgge noch net lange mit cpp. Brauch so ein Proggi für Info Unterricht und bekomms net hin.



  • Sacred schrieb:

    (D)Evil schrieb:

    Let's play with std::bitset (Header: <bitset>)!

    Kannste das pls etwas genauer erläutern, ich porgge noch net lange mit cpp. Brauch so ein Proggi für Info Unterricht und bekomms net hin.

    google std::bitset?
    http://cplusplus.com/reference/stl/bitset/bitset.html

    lernt doch mal lesen 😞

    ---

    aber ich würde dir empfehlen, dich trotzdem mal mit der umrechnung in andere zahlensysteme (das schema ist jedes mal gleich 😉 zu beschäftigen. das solltest du in jedem schlechten assembler tutorial finden.
    denn ich denke nicht, dass sich dein(e) infolehrer(in) mit

    cout << hex << blubb;
    

    begnügen wird.



  • Die Lösung mit std::bitset hat den Nachteil, dass man sich vorher auf die maximale Stellenanzahl festlegen muss. Das ist i.A. unerwünscht.

    Ein hier schon mehr als einmal geposteter Klassiker ist:

    #include <iostream>
    #include <iterator>     // ostream_iterator
    
    template< int Base, typename T, typename OutItr >
    OutItr decode( T x, OutItr out )
    {
        const T digit = x % Base;
        if( (x /= Base) > T() )
            out = decode< Base >( x, out );
        *out = digit;
        return ++out;
    }
    
    int main()
    {
        using namespace std;
        const int zahl = 2730;
        decode< 2 >( zahl, ostream_iterator< int >( cout << zahl << " -> " ) );
        cout << endl;
        return 0;
    }
    

    Damit erhält man als Ausgabe

    2730 -> 101010101010
    

    Gruß
    Werner



  • Danke Werne habs jezz soweit fertig so sieht der Code aus.

    // Gen.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    //
    
    #include "stdafx.h"
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	return 0;
    }
    
    #include <iostream>
    #include <iterator>     // ostream_iterator
    
    template< int Base, typename T, typename OutItr >
    OutItr decode( T x, OutItr out )
    {
        const T digit = x % Base;
        if( (x /= Base) > T() )
            out = decode< Base >( x, out );
        *out = digit;
        return ++out;
    }
    
    int main()
    {
        using namespace std;
    	int zahl;
    	cout << "Bitte gib eine Zahl ein:" << endl;
    	cin >> zahl;
    	cout << zahl << "als Hexadezimalzahl ist: " << hex << zahl << endl;
    	decode< 2 >( zahl, ostream_iterator< int >( cout << zahl << "als Binaerzahl ist: " ) );
    	system("Pause");
        return 0;
    }
    

    Thread kann geclosed werden und nochmal Danke an alle.


Anmelden zum Antworten