Bitmuster eines Wertes ausgeben in C

hab da ein problem, und zwar soll man in einem C-programm ein zeichen eingeben "z.b. 'f'" und auf dem bildschirm sollen dann die dazugehörigen bits (01100110) ausgegeben werden. wie macht man sowas?
 
such halt mal nach einer library die die daten in die binärcodes konvertiert gibts bestimmt schon.

vielleicht gibts auch ne funktion aber ich bin keine leuchte in C
 
such villeicht mal nach einem ASCII-zeichensatz, dann koenntest du alle zeichen dem binaercode zuordnen und ausgeben lassen... (waer halt ne schreibarbeit)

z.B. hier
 
Original von thaNookie
such villeicht mal nach einem ASCII-zeichensatz, dann koenntest du alle zeichen dem binaercode zuordnen und ausgeben lassen... (waer halt ne schreibarbeit)
[/URL]
genau deswegen schlag ich die library vor *fg*#

"warum die Bibel neu schreiben?" :D
 
So, habs selbst hinbekommen. trotzdem danke für eure Vorschläge!

Code:
//Programm zum anzeigen des Bitmusters eines Wertes(char)
//by Tec

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void main()
{

	char eingabe [1] ;	
	char bitmuster[10];
	int dezimal = 0;
	int modulo = 0;
	char bitall [10];
	int bitrun;

	printf(\"\nGeben Sie ein ASCII-Zeichen ein:\n>\");
	scanf(\"%c\",&eingabe);
	
	
	printf(\"\n\nDer ASCII-Code lautet %d\n\",eingabe[0]);
	dezimal = eingabe[0]; //wegen der binären null!


	//berechne anhand von modulo[2] die binären ziffern
	strcpy(bitall,\"\");
	while(dezimal > 0)
	{
		modulo = dezimal%2 ;
	
		if (modulo == 1)
		{
			strcat(bitall,\"1\");
			dezimal = dezimal - 1 ;		
		}
		else
		{
			strcat(bitall,\"0\");
		}
	
		dezimal = dezimal / 2;
	}


	//stelle Bits in die richtige Reihenfolge um 
	bitrun = strlen(bitall)-1;
	strcpy(bitmuster,\"\");

	for (bitrun;bitrun>=0;bitrun--)
	{	
		if (bitall[bitrun] == '0')
		{
			strcat(bitmuster,\"0\");
		}
		else
		{
			strcat(bitmuster,\"1\");
		}
	
	
	}


printf(\"\nDie Bitfolge lautet: %s\n\",bitmuster);	

}


Das Ausgabe-Ergebnis sieht dann so aus:
Beispiel mit "f"

Geben Sie ein ASCII-Zeichen ein:
>f


Der ASCII-Code lautet 102

Die Bitfolge lautet: 1100110
Press any key to continue :D
 
Von einer sehr netten Frau, habe ich dieses Ergebnis erhalten.

Code:
#include <stdio.h>
main()
{
char chr, chrc;
int counteri = 0, counter2i = 7;
scanf( \"%c\", &chr );
chrc = chr;
float chrf = chr;
bool arrayb[8];
for( ; counteri <= 7; counteri++)
{
( ( chrc /= 2 ) < ( chrf /= 2 ) ) ?  arrayb[counteri] = true : 
arrayb[counteri] = false;
chrf = chrc;
}
for( ; counter2i >= 0; counter2i-- )
printf(\"%d\", arrayb[counter2i] );
}

Okay, das ist die elegantere Bitshift-Operation.
 
Habs noch kuerzer hingekriegt :D.

Code:
#include <stdio.h>
main()
{
char a,b[8],c=0;
scanf(\"%c\",&a);
for(;c++<=8;)
(a>2*(a/=2)) ? b[7-(c-1)]='1' : b[7-(c-1)]='0';
puts(b);
}

edit: Codeblock
 
void printBitSequence(char charToPrint)
{
int bitToPrint = 7;
for(; bitToPrint >= 0; bitToPrint--)
printf("%d", ((charToPrint>>bitToPrint) & 1));
}
 
Zurück
Oben