Gleitpunktzahlen hilfe :(

Hallo liebe HaBo Community

Ich habe ein Problem bei einem Programm das ich schreiben soll, da ich auf diesem Gebiet leider noch sehr unerfahren bin.

Also zu meiner Aufgabe:

Ich soll ein C++-Programm, dass die Bitfolge einer int-, float- und double-
Variablen ausgibt.
Dazu soll ich zuerst mit einer Funktion beginnen die wie folgt lauten soll, Funktion string byte2bits(char byte).
Und zu guter letzt, Schreiben Sie ein main(), um eine Gleitpunktzahl einzulesen und deren interne
Bitfolge als int-, float- und double-Datentyp auf dem Bildschirm auszugeben.

Ich erhoffe oder besser gesagt erwarte keine Lösungen :wink:, mein Problem ist einfach ich habe absolut keine Ahnung wie ich das Angehen oder umsetzen soll.
Wenn jemand also vllt einen Vorschlag hat den er zum besten geben möchte und nach Möglichkeit für Dummies (mich :)) verständlich Preis gibt wäre ich doch sehr Dankbar.

Mit freundlichen Grüßen

Spootnix
 
Hay,

bzg. string byte2bits(char byte):

ein byte hat ja 8 bit, d.H. das 1'er, 2'er, 4'er ... 128'er bit
mit dem & (bitweise AND) kannst du überprüfen, ob das bit 'gesetzt' ist
Beispiel:
Code:
if(byte & 1) //Zahl ist ungerade
So könntest du jetzt z.b. deine Funktion realisieren:
Code:
String ausgabe = "";
if(byte & 128) ausgabe = ausgabe + "1"; // Wenn das 128'er bit gesetzt ist, 1
else ausgabe = ausgabe + "0";  // Ansonsten 0
//usw..

Ich hoffe das hilft dir was,


MfG
 
Vorsicht so wie AlterHacker das sagt, kann man nicht jedes Bit abfragen. Das funktioniert vllt bei 2er Potenzen. Ansonsten fragt man ein Bit so ab.
Code:
if (bitfolge & (1<<bit))
 
Klar, wenn du jetzt das n'te bit haben willst, sollte doch eg bei 1 << n und bei 2^(n-1) das gleiche rauskommen, oder irre ich mich da ?
Schon richtig, nur ist der Shift viel schneller (insofern der Compiler nicht bei letzterem zu ersterem optimiert).

mfg benediktibk

PS: Wobei ich 2^n besser finden würde, da man ja meistens von 0 weg zählt. Trotzdem ist der Shift schneller. :)
 
Klar, wenn du jetzt das n'te bit haben willst, sollte doch eg bei 1 << n und bei 2^(n-1) das gleiche rauskommen, oder irre ich mich da ?

Hm bei Integern wird doch das erste Bit für das Vorzeichen verwendet, ist also oben immer 0 oder?
Müsste also 2^(n-1) unsigned sein, damit das funktioniert. Ob es dafür reicht wenn n unsigned ist weiß ich aber nicht sicher, denke aber schon.
 
Zurück
Oben