Seite 1 von 1
Bit Darstellung in C
Verfasst: Mo Okt 19, 2009 4:27 pm
von nati
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

Re: Bit Darstellung in C
Verfasst: Mo Okt 19, 2009 4:52 pm
von nufan
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.
Re: Bit Darstellung in C
Verfasst: Mo Okt 19, 2009 7:28 pm
von Xin
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?
Re: Bit Darstellung in C
Verfasst: Mo Okt 19, 2009 7:48 pm
von nufan
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.
Re: Bit Darstellung in C
Verfasst: Di Okt 20, 2009 5:40 pm
von Xin
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?
Re: Bit Darstellung in C
Verfasst: Di Okt 20, 2009 5:51 pm
von nufan
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

Re: Bit Darstellung in C
Verfasst: Di Okt 20, 2009 6:13 pm
von nati
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

Re: Bit Darstellung in C
Verfasst: Di Okt 20, 2009 7:01 pm
von cloidnerux
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.
Re: Bit Darstellung in C
Verfasst: Di Okt 20, 2009 7:07 pm
von Xin
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.
Re: Bit Darstellung in C
Verfasst: Di Okt 20, 2009 7:19 pm
von Kerli
Zufälle gibts.
Hier hat jemand die ganz gleiche Frage und kommt ebenfalls aus Kärnten
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...