Bit Darstellung in C

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
nati
Beiträge: 24
Registriert: Sa Jun 06, 2009 1:35 pm
Wohnort: Österreich/Kärnten

Bit Darstellung in C

Beitrag von nati » Mo Okt 19, 2009 4:27 pm

hi,

ich habe eine Aufgabe bekommen, eine Zahl einzulesen und die mit Bit Darstellung wieder auszugeben. Das soll ca so aussehen:

Bibliotheken nur: stdio.h

Eingabe: 10

und die Ausgabe wäre dann: 00001010

Ich nehm mal an, ich muss keine Liste machen wo ich genau definiere welche Zahl aus welchen Bits besteht. Deshalb würde ich gerne wissen, wie ich das ca machen soll. Gibts eine Funktion oda muss ich eine schreiben!? :?

Ich möchte nicht, dass jemand die Aufgabe für mich ganz macht, ich soll ja was daraus lernen... ich wäre nur dankbar für einen Schubs in die richtige Richtung, weil ich keine Ahnung habe wie das gehen soll... :!:

danke

mfg Natalie :)

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Bit Darstellung in C

Beitrag von nufan » Mo Okt 19, 2009 4:52 pm

Hallo :)
Ich kann jetzt schlecht abschätzen wie weit du bist. Grob gesagt: du prüfst alle Bits der Zahl einzeln ob sie gesetzt sind. Wenn das Bit gesetzt ist gibst du 1 aus bzw. schreibst es in einen String, ansonsten 0. Eine kleine Hürde dabei ist, dass du entweder rückwärts prüfst (-> beim höchstwertigen Bit anfängst) oder verkehrt in den String schreibst.
Im Wiki ist der Vorgang des Abfragens kurz beschrieben, aber das lässt sich in deinem Fall mit einer Schleife viel schöner lösen.
nati hat geschrieben:Eingabe: 10

und die Ausgabe wäre dann: 00001010
Das ist schon ein kleiner Widerspruch in sich ^^
Entweder du nimmst ein int und hast bei der Ausgabe die führenden 0en weggelassen oder du nimmst ein char und die Eingabe ist falsch.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Bit Darstellung in C

Beitrag von Xin » Mo Okt 19, 2009 7:28 pm

Hallo nati,

Deine Aufgabe ist eigentlich verhältnismäßig einfach zu lösen.
Wie dani93 schon beschrieb, kannst Du mit dem &-Operator ein Bit abtesten.
Ein Einzelnes Bit erreichst Du mit "1 << position". Wenn Du position durch eine Schleife veränderst, kannst Du so Bit für Bit mit & abprüfen.
dani93 hat geschrieben:
nati hat geschrieben:Eingabe: 10

und die Ausgabe wäre dann: 00001010
Das ist schon ein kleiner Widerspruch in sich ^^
Entweder du nimmst ein int und hast bei der Ausgabe die führenden 0en weggelassen oder du nimmst ein char und die Eingabe ist falsch.
Wenn die Eingabe ein int ist, dann kann die Ausgabe doch ein char-Array sein, dass z.B. führende Nullen enthält?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Bit Darstellung in C

Beitrag von nufan » Mo Okt 19, 2009 7:48 pm

Xin hat geschrieben:
dani93 hat geschrieben:
nati hat geschrieben:und die Ausgabe wäre dann: 00001010
Das ist schon ein kleiner Widerspruch in sich ^^
Entweder du nimmst ein int und hast bei der Ausgabe die führenden 0en weggelassen oder du nimmst ein char und die Eingabe ist falsch.
Wenn die Eingabe ein int ist, dann kann die Ausgabe doch ein char-Array sein, dass z.B. führende Nullen enthält?
Natürlich kann man da die führenden Nullen ausgeben, hier wird aber nur eine bestimmte Anzahl (nämlich das volle Byte) ausgegeben. Das ist zwar auch kein Problem, aber ob es Sinn der Übung ist das höchstwertige Byte mit einem Wert != 0 herauszusuchen und bis dorthin alles auszugeben ist eine andere Frage.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Bit Darstellung in C

Beitrag von Xin » Di Okt 20, 2009 5:40 pm

dani93 hat geschrieben:Natürlich kann man da die führenden Nullen ausgeben, hier wird aber nur eine bestimmte Anzahl (nämlich das volle Byte) ausgegeben. Das ist zwar auch kein Problem, aber ob es Sinn der Übung ist das höchstwertige Byte mit einem Wert != 0 herauszusuchen und bis dorthin alles auszugeben ist eine andere Frage.
Wieso?
Sie soll die Zahl umrechnen und fertig. Und 007 ist genauso Sieben, wie es 7 auch ist.

Wie sieht es denn aus, Natalie?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Bit Darstellung in C

Beitrag von nufan » Di Okt 20, 2009 5:51 pm

Xin hat geschrieben:
dani93 hat geschrieben:Natürlich kann man da die führenden Nullen ausgeben, hier wird aber nur eine bestimmte Anzahl (nämlich das volle Byte) ausgegeben. Das ist zwar auch kein Problem, aber ob es Sinn der Übung ist das höchstwertige Byte mit einem Wert != 0 herauszusuchen und bis dorthin alles auszugeben ist eine andere Frage.
Wieso?
Sie soll die Zahl umrechnen und fertig. Und 007 ist genauso Sieben, wie es 7 auch ist.
Es ging mir auch gar nicht um die Werte, sondern einfach um die Art der Darstellung.
Lassen wirs lieber, wahrscheinlich diskutieren wir sowieso über etwas, dass nichts mit der eigentlichen Aufgabe zu tun hat :)

nati
Beiträge: 24
Registriert: Sa Jun 06, 2009 1:35 pm
Wohnort: Österreich/Kärnten

Re: Bit Darstellung in C

Beitrag von nati » Di Okt 20, 2009 6:13 pm

Ok ich weiß zwar nicht, ob das die Frage war aber laut Angabe soll das genau so aussehen:

Please enter an integer: 1
00000000|00000000|00000000|00000001

oda
Please enter an integer: -1
11111111|11111111|11111111|11111111

So sollte es aussehen, hoffe das hat das geklärt...

mfg :)

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Bit Darstellung in C

Beitrag von cloidnerux » Di Okt 20, 2009 7:01 pm

Please enter an integer: -1
11111111|11111111|11111111|11111111
-1 ist meines Wissens nach
10000000|00000000|00000000|00000001

Und um das zu lösen, kannst du einfach in einer for-schleife von 32 Runterzälen, Prüfen ob das Bit an der Stelle eine 1 oder 0 ist und mit Printf 1 oder 0 ausgeben.
Zusätlich kann man noch prüfen ob 8 Bits getesten worden sind damit man ein "|" ausgeben kann.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Bit Darstellung in C

Beitrag von Xin » Di Okt 20, 2009 7:07 pm

cloidnerux hat geschrieben:
Please enter an integer: -1
11111111|11111111|11111111|11111111
-1 ist meines Wissens nach
10000000|00000000|00000000|00000001
nati liegt richtig. Rechne mal beide + 1. Dann erkennst Du, dass die Reihe 1er richtig ist.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Bit Darstellung in C

Beitrag von Kerli » Di Okt 20, 2009 7:19 pm

Zufälle gibts. Hier hat jemand die ganz gleiche Frage und kommt ebenfalls aus Kärnten :P
cloidnerux hat geschrieben:-1 ist meines Wissens nach
10000000|00000000|00000000|00000001
Das wäre nur dann wenn man mit das erste Bit als Vorzeichenbit festlegen würde. Die verwendete Darstellung ist aber das Zweierkomplement. Dabei erkennt man zwar auch am ersten Bit das Vorzeichen, kann aber nur bei positiven Zahlen direkt in das Dezimalsystem umrechnen...
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Antworten