online 1
gast (50)

/ Forum / Anwendungen(Java,C++...)

Anwendungen(Java,C++...)Anwendungen(Java,C++...)

Fragevon rerl vom 21.10.2021, 20:59 Options

[C] Dezimal in binär umrechnen?!

Hallo,
mein Problem ist folgendens. Ich bin totaler Programmier Anfänger und brauche Hilfe.
Die Aufgabenstellung sieht so aus das ich ein Programm schreiben soll das die Binärpräsentation eines Integers ausgeben soll. Die einzelnen Bytes sollen mit "|" getrennt werden und der Integer soll vorher eingelesen werden.
Bitte um rasche Lösungsvorschläge

Schon mal danke im voraus

Mein programm für die umwandlung von dezimal auf binär sieht so aus:
#include <stdio.h>

int main()
{
unsigned int value,i,bin[32];
int counter
printf("Please enter an integer:");
scanf("%d",&value);

for(i=0;i<32;i++)
{
bin=((value>>i)&1);

}

for(i=0;i<32;i++)
{

printf("%d",bin[31-i]);
}

}

printf("\n");
return 0;
}

brauch nur mehr diese ("|") zwischen den bytes

soll nachher sowas in der Art rauskommen:

Interg: 0
00000000|00000000|00000000|00000000


Antwort schreiben

Antwort 1 von son_quatsch vom 22.10.2021, 08:33 Options

Sicher, dass folgende Zeile funktioniert?
Zitat:
bin=((value>>i)&1);


Ansonsten gib doch das Zeichen einfach aus: mach aus
Zitat:
printf("%d",bin[31-i]);
einfach
Zitat:
printf("%d|",bin[31-i]);

Antwort 2 von rerl vom 22.10.2021, 12:27 Options

Danke für den Tipp aber das löst mein problem nicht wirklich.
Ich will, dass nach allen 8 Zeichen ein | steht und nicht nach jedem.
Versuch das ganze mit ner for Schleife, aber funkt nicht ganz so super.

#include <stdio.h>

int main()
{
unsigned int value,i,bin[32];
printf("Please enter an integer:");
scanf("%d",&value);
int j;
for(i=0;i<32;i++)
{
bin=((value>>i)&1);

}

//Schleife für umgekehrte Ausgabe
for(i=0;i<32;i++)
{
for (j=8;j<32;j++)
{
if ( j = (j+8))
{
printf ("|");
}
}
printf("%d",bin[31-i]);
}

printf("\n");
return 0;
}

Antwort 3 von rerl vom 22.10.2021, 12:36 Options

Hab ne andere Variante um von Dezimal auf binär umzurechnen. Mein Problem is aber, dass ich nicht weiss wie ich alle bytes mit | voneinander trennen soll. Habs mit ner for schleife probiert klappt aber milde gesagt nicht so ganz. Ich hoffe du kannst mir helfen...
Jede 8. Stelle soll durch | getrennt sein. Bei deiner Variante is jedes Zeichen durch | getrennt.

#include <stdio.h>
int main()
{
unsigned int value,i,bin[32];
printf("Please enter an integer:");
scanf("%d",&value);
int j;
for(i=0;i<32;i++)
{
bin=((value>>i)&1);
}
//Schleife für umgekehrte Ausgabe
for(i=0;i<32;i++)
{
for (j=8;j<32;j++)
{
if ( j = (j+8))
{
printf ("|");
}
}
printf("%d",bin[31-i]);
}
printf("\n");
return 0;
}

Antwort 4 von Dr.Ma-Busen vom 22.10.2021, 14:27 Options

Moin!

Ich würde versuch das mit der Trennung in die schleife zu packen die das umrechnet. Dort über eine Zählvariable, wenn die den wert 8 hat das trennzeichen ausgeben und wieder auf 0 setzen.

Die hier hatte ich mir mal gebastelt. Rechnet alle Dez. Zahlen um in ein andere Zahlen system. Von Zahlen mit der basis 2 bist zur basis 16.
Habe das mal an entsprechender stelle mal ergänzt mit ein Trennzeichen.

int main() { 
  
  unsigned int zahl, basis; 
  char out[200];

  printf("Zahl:"); 
  scanf("%d",&zahl); 
  
  printf("Basis:"); 
  scanf("%d",&basis); 
  
  char cl[16]= {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
  int sc = 0, idx=0;
  
  while(zahl >= 1){
    
    if(sc++ == 8){
      out[idx++] = '|';
      sc = 0;
    }

    out[idx++] = cl[ (zahl % basis) ];
    zahl /= basis;
  }
  
  while(--idx >= 0){
    printf("%c", out[idx]);
  }
  printf("\n");
return 0; 
}


MfG

Antwort 5 von son_quatsch vom 22.10.2021, 14:31 Options

Ungetestet:

#include <stdio.h> 
int main() { 
  unsigned int value, i; 

  printf( "Please enter an integer: " ); 
  scanf( "%d", &value );

  for( i= 31; i>= 0; i-- ) { 
    printf( "%d|", (value>> i)&& 1 );
  } 

  return 0; 
}

Ähnliche Themen

Wie erstellt man eine Webseite / Homepage (html)?
derpfleger  26.01.2008 - 19494 Hits - 5 Antworten

VB6 Variable in anderen Sub übergeben
da_horscht  28.11.2009 - 100 Hits - 6 Antworten

Java: Swing,innere klassen
sunny84  16.04.2008 - 20 Hits - 4 Antworten

Themes und Languages für Irfan View erstellen
TByte  17.04.2008 - 62 Hits - 24 Antworten

Flash-Spiele selbst machen
Glurz  19.04.2008 - 25 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026