bitte um help bei Modulu
hallo,
ist es irgendwie möglich eine zahl vom format double % 2 zu nehmen?
weil:
ich hab folgenden code bis jetzt:
if (analogwert >=0)
{
kom0 = analogwert*102.4*16;
}
else
{
kom0 = sqrt(analogwert*analogwert)*102.4*16;
}
kom1 = kom0 / 2;
kom2 = kom1 / 2;
kom3 = kom2 / 2;
kom4 = kom3 / 2;
kom5 = kom4 / 2;
kom6 = kom5 / 2;
kom7 = kom6 / 2;
kom8 = kom7 / 2;
kom9 = kom8 / 2;
kom10= kom9 / 2;
kom11= kom10 / 2;
kom12= kom11 / 2;
kom13= kom12 / 2;
kom14= kom13 / 2;
kom15= kom14 / 2;
abin1= kom0 % 2;
abin2= kom1 % 2;
abin3= kom2 % 2;
abin4= kom3 % 2;
abin5= kom4 % 2;
abin6= kom5 % 2;
abin7= kom6 % 2;
abin8= kom7 % 2;
abin9= kom8 % 2;
abin10= kom9 % 2;
abin11= kom10 % 2;
abin12 = kom11 % 2;
abin13 = kom12 % 2;
abin14 = kom13 % 2;
abin15 = kom14 % 2;
der analogwert wird davor eingelesen und keine eine zahl zwischen -10 und 10 sein, also auch z.b. 8,5 !
Die Zahl die dann nach der Berechnung für kom0 rauskommt, soll dann eben durch die untenstehende berechnung in binär umgewandelt werden. Wenn ich jetzt aber bei analogwert z.b. 8.5 eingebe, dann nimmt er die 8 und rechnet mit der, da ich ja für % eine int zahl brauche.
Aber int kann ja keine 8,5 annehmen.
gibt es da irgendeinen weg das anders zu machen, das ich das irgendwie mit 8,5 auch auf die binärwerte komme ?
danke !
ist es irgendwie möglich eine zahl vom format double % 2 zu nehmen?
weil:
ich hab folgenden code bis jetzt:
if (analogwert >=0)
{
kom0 = analogwert*102.4*16;
}
else
{
kom0 = sqrt(analogwert*analogwert)*102.4*16;
}
kom1 = kom0 / 2;
kom2 = kom1 / 2;
kom3 = kom2 / 2;
kom4 = kom3 / 2;
kom5 = kom4 / 2;
kom6 = kom5 / 2;
kom7 = kom6 / 2;
kom8 = kom7 / 2;
kom9 = kom8 / 2;
kom10= kom9 / 2;
kom11= kom10 / 2;
kom12= kom11 / 2;
kom13= kom12 / 2;
kom14= kom13 / 2;
kom15= kom14 / 2;
abin1= kom0 % 2;
abin2= kom1 % 2;
abin3= kom2 % 2;
abin4= kom3 % 2;
abin5= kom4 % 2;
abin6= kom5 % 2;
abin7= kom6 % 2;
abin8= kom7 % 2;
abin9= kom8 % 2;
abin10= kom9 % 2;
abin11= kom10 % 2;
abin12 = kom11 % 2;
abin13 = kom12 % 2;
abin14 = kom13 % 2;
abin15 = kom14 % 2;
der analogwert wird davor eingelesen und keine eine zahl zwischen -10 und 10 sein, also auch z.b. 8,5 !
Die Zahl die dann nach der Berechnung für kom0 rauskommt, soll dann eben durch die untenstehende berechnung in binär umgewandelt werden. Wenn ich jetzt aber bei analogwert z.b. 8.5 eingebe, dann nimmt er die 8 und rechnet mit der, da ich ja für % eine int zahl brauche.
Aber int kann ja keine 8,5 annehmen.
gibt es da irgendeinen weg das anders zu machen, das ich das irgendwie mit 8,5 auch auf die binärwerte komme ?
danke !
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 29806
Url: https://administrator.de/contentid/29806
Ausgedruckt am: 22.11.2024 um 19:11 Uhr
5 Kommentare
Neuester Kommentar
Ich blicke ehrlich gesagt nicht genau, was Du in Deinem Code erreichen willst, aber die Antwort auf die Frage ob man eine Double modulo 2 nehmen kann lautet:
NEIN
Modulo ist definiert für den Rest aus der Division 2er Ganzzahlen. Deswegen will der Compiler ja auch ein Integer haben.
Wenn Du einfach von einer Zahl den Rest der Division durch 2 haben willst:
Zahl durch 2 teilen und in Integer umwandeln (nicht runden). Integer mal 2 nehmen und von der Zahl abziehen. Fertig.
NEIN
Modulo ist definiert für den Rest aus der Division 2er Ganzzahlen. Deswegen will der Compiler ja auch ein Integer haben.
Wenn Du einfach von einer Zahl den Rest der Division durch 2 haben willst:
Zahl durch 2 teilen und in Integer umwandeln (nicht runden). Integer mal 2 nehmen und von der Zahl abziehen. Fertig.
Bin mehr Java als C Programmierer, aber wenn integerzahl = doublezahl funktioniert, dann genauso, in Java muß man es casten: integerzahl = (int) doublezahl;
Wenn Du eine Gleitkommazahl in Binär umwandeln willst, Gleitkommazahlen werden als Mantisse und Exponent gespeichert (siehe http://de.wikipedia.org/wiki/Gleitkommazahl#Gleitkommazahlen_in_der_Dig ... ), daß geht dann nicht mehr ganz so einfach.
Kann man in C nicht einfach einen Pointer auf die Variablenadresse machen und die Bits dann direkt auslesen?
Wenn Du eine Gleitkommazahl in Binär umwandeln willst, Gleitkommazahlen werden als Mantisse und Exponent gespeichert (siehe http://de.wikipedia.org/wiki/Gleitkommazahl#Gleitkommazahlen_in_der_Dig ... ), daß geht dann nicht mehr ganz so einfach.
Kann man in C nicht einfach einen Pointer auf die Variablenadresse machen und die Bits dann direkt auslesen?
ich weiß zwar nicht genau wie du das ergebnis in binär haben willst aber kanst ja versuchen entweder:
Die Zahl mit 10 zu multiplizieren damit du im Bereich 100 bis -100 bist. So hast du dann keine Nachkommastellen mehr.
Dann kannst du auch ohne Probleme nen Cast von Double auf Int machen.
Oder du machst da zwei Variablen. Eine Int für die Stelle vor dem Komma und eine für die Stellen danach und rechnest dann damit.
miniversum
Die Zahl mit 10 zu multiplizieren damit du im Bereich 100 bis -100 bist. So hast du dann keine Nachkommastellen mehr.
Dann kannst du auch ohne Probleme nen Cast von Double auf Int machen.
Oder du machst da zwei Variablen. Eine Int für die Stelle vor dem Komma und eine für die Stellen danach und rechnest dann damit.
miniversum