C Dezimal Z. Array -> Binärzahl ausgeben

Grohli

Lt. Junior Grade
Registriert
Sep. 2006
Beiträge
288
Hallo,

Ich soll ein Programm mit einzelnen unterfunktionen schreiben, die in einzelnen .lib datein sind.
Mein Programm kann schon Arrays in Intiger und in Hexzahlen umwandeln nur soll es jetzt mal in Binär sein.
Es gibt schon einen ähnlichen thread hier: https://www.computerbase.de/forum/threads/dezimal-in-binaer-konvertieren-in-c.155499/
nur fehlen mir die kommentierungen.
Wie ich das array in eine intiger variable kriege weiß ich aber nicht wie ich beim teilen durch zwei den rest abspeicher.
Auch das umdrehen der zahl ist nicht ganz verständlich.
 
Wenn ich von oben nach unten schriftlich eine division durch zwei mache stellt der oberste wert die 2^0 stelle dar und der unterste sprich der letzte die 2^n stelle.
oder klappt das schon so?
rest = zahl%2 was steht dann im rest drin? 1 oder 2?
Und was ist wenn ich rest = zahl%10 bzw zahl%3 schreibe?
Bitte erläuterung :)
 
Eigentlich steht doch in dem Thread alles drin. Bezüglich der Grundlagen würde ich einfach mal im Internet nach Anleitungen suchen. Die Google-Suche nach '% operator c++' zum Beispiel führte mich auf diese Seite:
http://tutorial.schornboeck.net/operatoren.htm

rest = zahl%2
Wie der Name 'rest' sagt, steht dort der Rest der Division drin und wenn du durch 2 teilst, kann der nur 0 oder 1 sein.
> Und was ist wenn ich rest = zahl%10 bzw zahl%3 schreibe?
Beantwortet sich dann wohl von selbst.

> Auch das umdrehen der zahl ist nicht ganz verständlich.
/*jetzt noch richtig herum ausgeben */

while (i>0)
{
i--;
printf ("%d", rest);
}


i ist die Anzahl der Zeichen und es wird einfach der String rückwärts durchgegangen und Zeichen für Zeichen ausgegeben.

Am elegantesten ist natürlich das Beispiel mit dem bitweisen Verschieben aber ich denke, dass die Methode von Tafi20 für dich einfacher zu verstehen ist.
 
Code:
string DecToBin( __int64 Decimal )
{
  string bin = "";
  if( Decimal == 0 ) return "0";
  bool negative = (Decimal < 0);
  if( negative ) Decimal *= -1;
  while( Decimal > 0 )
  {
    bin = (Decimal % 2 == 1 ? "1" : "0") + bin;
    Decimal /= 2;
  }
  if( negative ) bin[0] = '1';
  return bin;
}
eigentlich ganz easy... nur negative zahlen sind noch nicht korrekt implementiert. ;)
 

Ähnliche Themen

T
Antworten
15
Aufrufe
22.087
Zurück
Oben