Dezimalzahlen in Binärzahlen umwandeln
-
Ich als C++ Newbie habe folgendes Problem: Ich möchte so simpel wie möglich eine Dezimalzahl in eine Binärzahl umwandeln. Leider haben mir dabei die anderen Beiträge diesbezüglich wenig weitergeholfen... Wäre dankbar wenn mir jemand einen quellcode schreiben würde anhand dem ich das nachvollziehen kann. Vielen Dank!!!
Wissen ist Macht....
-
weißt du, wie man das von hand macht?
-
Ich verstehe deine Frage nicht
-
wie du eine dez zahl in eine binär zahl auf einem stück papier umrechnest!
Wenn du das kannst sollte es progrmm technisch kein problem darstellen!
-
Achso klar weiß ich das! Is ja immer Modulu 2, d.h. Dezimalzahl%2 ergibt den Rest. Mein Problem is nur die Schleife, da der Nicht-Rest-Anteil ja wieder weiterverarbeitet werden muss. Damit meine ich:
z.B. 13/2 = 6 Rest 1
6/2 = 3 Rest 0 <--- Das muss automatisch passieren sonst könnte ich es ja gleich auf nem Bierdeckel ausrechnen
-
do
{
was auch immer;
}
while (REST == 0);
-
donzero schrieb:
wie du eine dez zahl in eine binär zahl auf einem stück papier umrechnest!
Wenn du das kannst sollte es progrmm technisch kein problem darstellen!Doch tut es mein bester ich weiß auch nicht wieso...
-
Da muss ja auch noch ein Zähler rein weil das ganze ja nur 8 mal hintereinander ablaufen muss. Da ich echt kein plan mehr habe würde ich sagen du schreibst das mal schnell und verbreitest dein wissen unter den dummen hehe
-
Ja gut ... kannst du dennw as mit der schleife anfangen die ich oben geschrieben habe?! Das müsste dich dochin die richtige Richtung lenken
//EDIT Warum 8 mal ?! kann doch auch weniger oder mehr sein!?
-
Diron schrieb:
z.B. 13/2 = 6 Rest 1
6/2 = 3 Rest 0na siest du! jetzt mußt du nur das verfahren in ein programm uwandeln.
so in etwa:
zahl nehmen.
zahl%2 => nächste stelle der binärzahl
zahl=zahl/2
wenn zahl noch nicht 0:
von vorne anfangenjetzt kannst du das in ein programm umwandeln, immer eins nach dem anderen.
-
-
Binärzahlen haben doch ne länge von 8 Zeichen.
Wegen 2^0 2^1 usw. Hat man alles mal gelernt.
11010101 <--- 213 heheIch sagte doch das ich es algorithmisch nicht so drauf habe weil ich mich damit genau seit heute morgen um 9:13 befasse...
-
es kommt immer darauf an wieviel bit die binärzahl hat! Ich frage mich gerade was du so gelernt hast
-
Diron schrieb:
Binärzahlen haben doch ne länge von 8 Zeichen.
und was haben dezimalzahlen für eine länge?
Hat man alles mal gelernt.
jaja, immer das risiko, was falsches zu lernen...
-
Kann man das nicht einfacher aufs Blatt bringen! Is mir echt viel zu stressig 2000 Zeilen Code wegen so ner pissigen Aufgabe zu schreiben
-
was erwartest du denn! wenn du es nich selber probieren willst tuts mir leid!
aber wie gesagt
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39490.html
da is was
-
Wieso gibts dafür eigentlich keinen Manipulator wie für oct, hex usw.? Hab mal gehört es gibt nen Befehl wie setbase. Könnte man es damit auch schaffen?
Das geht jedenfalls nicht: cout << setbase(2) << [Zahl] << endl;
Wär ja auch zu geil...
-
Jetzt übertreib mal nicht:
So gehts z.B. auch kürzer, dafür aber nicht so komfortabel(Da beschränkt auf den Wertbereich von unsigned int)
unsigned int decToBin(int x) { unsigned int y = 0; while(x > 0) { y = y * 10 + (x % 2); x /= 2; } return y; }
Caipi
-
Ich schau mir das jetzt mal in Ruhe an. Vielen Dank Caipi und PROST!
Bald is wieder sommer und da vernichte ich dich literweise hehe
-
FÜR CAIPI
:-)#include <iostream> // für io #include <sstream> // für's umwandeln #include <algorithm> // für's umdrehen using std::string; using std::ostringstream; string binary( unsigned int zahl ) { ostringstream os; // hier drin binärziffern sammeln for ( int i = zahl; i != 0; ) { // es wird immer das rechte bit untersucht // wenn zahl ungerade (Bit 0 == 1), // 1 an den ostringstream hängen, sonst 0 if (i & 1) os << "1"; else os << "0"; i >>= 1; // nach rechts shiften, um nächste // binärziffer zu untersuchen // (entspricht teilen durch zwei) } string dualzahl = os.str(); // in string kopieren std::reverse( dualzahl.begin(), dualzahl.end() ); // string umdrehen return dualzahl; } void wait() { // warten char c; std::cin >> c; } int main(void) { std::cout << "Ergebnis: " << binary( 439828 ); wait(); return 0; };