binäre operationen?
-
Ich wollte fragen ob es ne include datei gibt, mit der man float binär einlesen kann und binäre operationen wie multiplikation/division addition/subtraktion ermöglicht.
-
Was genau hast du vor? Du könntest über einen passenden Cast an die Binär-Darstellung eines float-Wertes rankommen - aber ob es sinnvoll ist, auf diesen Daten zu rechnen, weiß ich nicht.
-
im prinzip möchte ich erreichen das ich zwei werte eingeben kann und diese dann wahlweise binär multipliziert oder dividiert werden und das ganze auf dem bildschirm angezeigt wird.
vielleicht reicht dazu acuh einfach einige überlegungen mit dem modulo operator...
-
shift operator und verUNDen direkt mit dem float wert würd ich sagen (z.b bei division)
-
also ich hab das jetzt mal so umgesetzt mit einer zahl umwandeln, bekomm ich leider noch nicht so ganz manuell hin:
PS: Habe das erstmal auf ganzzahl umwandeln beschränkt.#include <stdio.h> #include <string.h> #include <conio.h> void main () { int dez_zahl=50; int rest_op; int bin[20]; int n; n=0; do { printf("%i : 2 =",dez_zahl); rest_op =(float)dez_zahl; dez_zahl = dez_zahl/2; // dez zahl teilen bis "null" erreicht ist printf("%i\n",dez_zahl); if(rest_op%2 == 0) //Bed bei div Rest 0 { bin[n]=0; printf("---------->Rest 0\n"); } else // div Rest 1 { bin[n]=1; printf("---------->Rest 1\n"); } printf("%i\n",bin[20]); n++; //Feld scheint nicht erhöt zu werden ??? }while (dez_zahl > 0); printf("%i",bin[20]); /* Hier sollten nun alle rest werte von oben nach unten erscheinen. Bekomme als ausgabe aber immer nur das im ersten feld der letzte "Rest" steht //Weiterhin besteht das Problem das zum Schluß alle Elemente vertauscht werden müssen, also wenn im feld die reste nach einander reingeschrieben werden, müssen die korrekterweise umgetauscht werden um die bin zahl zu ergeben. BSP: 50 binär im Feld steht 010011 von oben nach unten beschrieben korrekterweise muß umgedreht werden das im Feld 110010 steht nur WIE? erreich ich das? */ }
-
Was mir auf den ersten Blick auffaellt:
printf("%i",bin[20]);
das gibt dir das 21. element des arrays bin aus.
hier:
bin[n]=1;
hast du es schoen richtig gemacht und immer nur das n. Elemente angesprochen.warum nicht bei der ausgabe auch?
-
ok hast recht aber wiso bekomme ich am ende bei ausgabe des gesamten strings son buchstaben salat bzw nur im ersten element des strings steht der wert
printf("%i\n",bin[n]); n++; //Feld scheint nicht erhöt zu werden ??? }while (dez_zahl > 0); printf("%i",bin);
-
ich zitiere mich mal:
hier:
bin[n]=1;
hast du es schoen richtig gemacht und immer nur das n. Elemente angesprochen.warum nicht bei der ausgabe auch?
bin ist kein %i (integer) sondern ein array of int
du machst
bin[n]=1warum gibst du dann nicht auch bin[n] aus?
-
ok das ganze konnte ich soweit lösen:
eins[0]=1; null[0]=0; ....................... if(rest_op%2 == 0) //Bed bei div Rest 0 { bin[n]=null[0]; printf("---------->Rest 0\n"); } else // div Rest 1 { bin[n]=eins[0]; printf("---------->Rest 1\n"); } printf("%i\n",bin[n]); n++; }while (dez_zahl > 0); bin[n]=eins[1]; for(x=0; x<n; x++) { printf("%i",bin[x]); }
Ausgabe läuft jetzt wie geplant, allerdings möchte ich jetzt erreichen, das der gesamte string inhalt umgedreht wird
Quasi aus
string[0]=1
string[1]=2
string[2]=3
string[3]=4
soll werden
string[0]=4
string[1]=3
string[2]=2
string[3]=1hab mal versucht in dem Visual STudio nach <string.h> befehlen zu suchen, weil ich mein es gab nen vefehl der den array von hinten nach vorne aussliest und ähnliches, nur dummerweise finde ich die dinger da nicht.
Gibts irgendwo ne seite wo alle String befehle aufgelistet sind?
-
do { printf("%i : 2 =",dez_zahl); rest_op =(float)dez_zahl; dez_zahl = dez_zahl/2; // dez zahl teilen bis "null" erreicht ist printf("%i\n",dez_zahl); if(rest_op%2 == 0) //Bed bei div Rest 0 { bin[n]=0; printf("---------->Rest 0\n"); } else // div Rest 1 { bin[n]=1; printf("---------->Rest 1\n"); } n++; //Feld scheint nicht erhöt zu werden ??? } while (dez_zahl > 0);
...ginge auch so:
while (dez_zahl > 0) { bin[n++]= dez_zahl & 1; dez_zahl>>=1; }
das der gesamte string inhalt umgedreht wird
gib's doch einfach rueckwaerts aus:
for(x=n-1;x>=0;x--) { printf("%i",bin[x]); }