Dezimalzahl in Binaer darstellen
-
Hallo, ich will Dezimalzahlen in Binaer darstellen. Habe folgende code geschrieben:
while(bin > 0)
{
if ( bin % 2 == 0)
cout << "0";if (bin % 2 == 1)
cout << "1";bin /=2;
}bekomme aber falsche Ergebnis.
z.b. für 8 bekomme ich 0001 und nicht 1000
danke und lg
roni
-
Hast du auch eine Frage?
Übrigens, dein Ergebnis ist nicht wirklich falsch, nur rückwärts.
-
sieht so aus als wenn du die nicht ausgeben sollst, sondern in nem array speicherst. dann wenn fertig musst das array auslesen von hintenrum. sprich array[n]....array[0].
-
lol wie ich es liebe wenn ich während ich beitrag schreibe, einer schon schneller war. ist fast wie bei betrugbay
-
die zweite Abfrage
if (bin % 2 == 1)
kannst du dir sparen, denn das ist der else-Zweig der ersten (außer 0 oder 1 gibt es keine anderen möglichen Ergebnisse bei mod2 :-))
btw:
if(bin % 2 == 0) entspricht if(!(bin % 2))
und
if(bin % 2 == 1) entspricht if(bin % 2)
-
Hi, roniu
Bitte benutz doch die CodeTags
möglich lösung:// needs #include <string> unsigned int bin = 2000; std::string bin_out; while(bin > 0) { if ( bin % 2 == 0) bin_out += '0'; else bin_out += '1'; bin /=2; } bin_out = std::string(bin_out.rbegin(),bin_out.rend()); // Umkehren // Ausgeben std::cout << bin_out << std::endl;
-
@eViLiSSiMo: was ist mit einer initialisierung von bin_out ??
zB std::string bin_out="";
-
freshman schrieb:
@eViLiSSiMo: was ist mit einer initialisierung von bin_out ??
zB std::string bin_out="";Normalerweise sollte das imo nicht nötig sein da std::string eine Klasse ist.
aber wenn dann nicht std::string bin_out = ""; // erzeugt temporäre Instanz
sondern -> std::string bin_out("");
-
Danke an alle die so schnell geantworted haben.
Eine Frage an eViLiSSiMo: wieso hast du
unsigned int bin = 2000;
geschrieben. Sorry ich habe letzte Woche mit C++ angefangen und villeicht klingt wie eine blöde Frage aber warum bin = 2000? Warum nicht 1000 oder 3000??
-
roinu schrieb:
Danke an alle die so schnell geantworted haben.
Eine Frage an eViLiSSiMo: wieso hast du
unsigned int bin = 2000;
geschrieben. Sorry ich habe letzte Woche mit C++ angefangen und villeicht klingt wie eine blöde Frage aber warum bin = 2000? Warum nicht 1000 oder 3000??
Ach ich hab zum testen ob ich keinen Fehler gemacht hab irgend ne Zahl gebraucht.
Da hab ich halt 2000 genommen.
MfG
-
Ich glaube mich daran erinnern zu können das hier schon mal von Code-Hacker und noch jemandem eine Funktion gepostet wurde, die in etwa so ging:
string int2base(unsigned int z,unsigned int b) { if(z) { string x("0123456789ABCDEF"); return int2base(z/b,b) + x[z%b]; } return ""; }