dezimal > binär > hexadezimal



  • Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Generell kannst du Dezimalzahlen in Dualzahlen per Euklidischen Verfahren umwandeln ...

    25 / 2 = 12 | 1 ^ N
    12 / 2 = 06 | 0 | E
    06 / 2 = 03 | 0 | S
    03 / 2 = 01 | 1 | E
    01 / 2 = 00 | 1 | L
    
    d = 25;
    r = d % 16             = 9; ^
    d = ((d - r) / 16) = 1;
    r = d % 16             = 1; |
    

    (25)10 ^= (11001)2 ^= (19)hex

    d = 45;
    r = d % 16             = D; ^ (13 ^= D)
    d = ((d - r) / 16) = 2;
    r = d % 16             = 2; |
    

    (45)10 ^= (2D)hex

    d = 260;
    r = 260 % 16           = 4; ^
    d = ((d - r) / 16) = 16;
    r = d % 16             = 0; |
    d = ((d - r) / 16) = 1;
    r = d % 16             = 1; |
    

    (260)10 ^= (104)hex ...



  • das mit dem binär hab ich verstande, un da fehlt mir nur einwas zu ner guten umsetzten, aber das mit dem hexa versteht ich net ganz
    kannste vll bissl genauer erklärn? oder bin ich einfach zu blub ^^

    bei dem binär is müsste ich ja so machen:

    [cpp]
    				case 1:
    					cin>>i_deziZahl;
    					for (int i=0;i<[b]keine Ahnung[/b];i++)
    					{
    						array[i] = i_deziZahl % 2;
    						i_deziZahl /=2;
    						cout<<i_deziZahl<<endl;
    					}
    					for ([b]?[/b])
    					{
    						//i-was, damit die nullen und einsen getauscht werden (Rheinfolge)
    					}
    					for (int o=0;o<[b]anzhal der nullen und einsen[/b];o++)
    						cout<<array[o];
    				break;
    [/cpp]
    


  • ehm wo ist dein Problem?
    machs rekursiv ^^



  • hm ok, aber was muss ich bei
    for (int i=0;i<keine Ahnung;i++) und
    for (int o=0;o<anzhal der nullen und einsen;o++)
    rein machen?, also da wos schrwaz gedruckt is



  • Animal21 schrieb:

    das mit dem binär hab ich verstande, un da fehlt mir nur einwas zu ner guten umsetzten, aber das mit dem hexa versteht ich net ganz

    ist ganz einfach. in der praxis dienen hexzahlen dazu, mehrere bits einer binärzahl zusammenzufassen. dabei ergeben immer 4 bits eine hexziffer. das sieht dann so aus:

    bin   hex
    ---------
    0000  0
    0001  1
    0010  2
    0011  3
    ...
    <snip>
    ...
    1100  c
    1101  d
    1110  e
    1111  f
    

    hat man 8 bits, dann ergibt das 2 hexziffern, also eine zweistellige hexzahl. beispiel: 3chex = 0011 1100bin (links das bitmuster für die 3, rechts das für's C) zwölf bits ergeben eine 3-stellige hexzahl usw, usw...
    zum umwandeln guckst du: http://www.harmes.de/html/fi/umrechnung.html



  • ich würde einfach ein int einlesen, mit den entsprechenden präfixen, wie 0x für hexadezimal und ich glaub 0b für binär wird entschieden, welches Zahlensystem es ist. diese Zahl würd ich dann einfach in allen Zahlensysthemen ausgeben:

    int
    cin >> zahl;
    
    cout << bin << zahl << endl;
    cout << dec << zahl << endl;
    cout << hex << zahl << endl;
    

    aber mir fällt grad ein, ich glaub binäre ausgabe gibts nicht ... aber für den rest müsste es so gehen.



  • [cpp]
    			case 1:
    				cin>>i_deziZahl;
    				while (i_deziZahl > 0);
    				{
    					i_Icount = i_Icount + 1;
    					i_deziZahl /=2;
    					array[i_Icount] = i_deziZahl % 2;
    					cout<<i_deziZahl<<endl;
    				}
    					int o;
    					for (o=1;o<(sizeof(array)/sizeof(array[0]));o++)
    					{
    						cout<<array[o]<<endl;
    					}
    
    			break;
    [/cpp]
    

    kann mir vll einer sagen was hier falsch is? es wird mir immernur nix angezeigt

    ani



  • void dec_to_bin(unsigned long dec, std::string& dest)
    {
    	std::vector<char> vdest;
    	for (; dec >= 1; dec /= 2)
    		vdest.push_back(dec % 2);
    	dest = std::string(vdest.rbegin(), vdest.rend());   
    }
    

    oder so 😉



  • (D)Evil schrieb:

    oder so...

    void dec_to_bin (unsigned long dec, std::string& dest)
    {
        dec>>1 ? dec_to_bin (dec>>1, dest) : 0;
        dest += '0' + (char)(dec & 1); 
    }
    

    🙂



  • hmm, das versteht ich ent agnz, wie gesagtm bin nochz relativ neu in C++.
    könntet ihr das vll n bissl erklärn?
    mgh


Anmelden zum Antworten