dezimal > binär > hexadezimal
-
hio
ich würde gern zu lernen ect ein kleines prog schreiben, indem sich auf anfrage dezimal zu binär und hexadezimal umrechnet, bzw in die andern fälle
also das ganze mit stift un zettel bekomm ich leucht hin, also in die 3 verschiedenen systeme umzurechnen.
Aber wenn ich verzweifel fast, dass zu programmiern, deswegen sieht mein kleines prog auch noch recht "wüst" aus:[cpp] float f_Celsius, f_Fahrenheit, f_Kelvin; int i_biZahl, i_deziZahl, i_hexaZahl; unsigned int ui_Antwort_Menue, ui_Antwort_Temp,ui_Antwort_Zahlsys; . . //hab hier noch was andres eingebaut, also temperatur umrechnung . . case 2: cout<<"(1) Dezimal in Binär und Hexadezimal?"<<endl; cout<<"(2) Binär in Dezimal und Hexadezimal?"<<endl; cout<<"(3) Hexadezimal in Binär und Dezimal?"<<endl; cin>> ui_Antwort_Zahlsys; cout<<"Was soll umgerechnet werden?: "; switch (ui_Antwort_Zahlsys) { case 1: cin>>i_deziZahl; } case 3: break; default : cout<<"Diese Moeglichkeit besteht nicht!"<<endl<<endl; [/cpp]
könnt ihr mir vll anregungen, hilfen, beispiele, was der geier sagen, damit ich da n bissl vorwärts komm?
mfg
aniedit: dann is mir grade noch eingefallen, wie kann ich machen, das wenn ich z.b. alles schön umgerechnet hab, wieder zum anfang komme? also da wos prog gestartet hat
ani
-
- Du findest genügend Beispiele im Internet eine Zahl in einen String umzuwandeln der dann die Zahl in binär/dezimaler/hexadezimaler Darstellung enthält. Einfach bei Google eingeben. Wenn du dir die Arbeit der Umwandlung sparen willst ist auch folgendes möglich:
int i = 15; cout << hex << i; // F
- Mit Hilfe einer Schleife:
bool beenden = false; while(beenden == false) // bzw. while(!beenden) { ... dein code ... char c; cout << "Wollen Sie beenden j/n?" << endl; cin >> c; if(c == 'j') beenden = true; }
MfG SideWinder
-
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