Wert auf Tabellen Eintrag umrechnen [was: Die Frage gehört nicht hier, aber...]
-
...mir fällt auf die schnelle kein anderes Forum ein
Jeder kennt folgenden Zusammenhang:
Stelle Wert Ausdruck 1 1 2^0 2 2 2^1 3 4 2^2 4 8 2^3 .. .. .. usw...
Das bedeutet, wenn ich z.B. die Stellen 2, 3 und 6 habe, dass der Wert sich
wie folgt zusammensetzt: 2^(2-1) + 2^(3-1) + 2^(6-1) = 2 + 4 + 32 = 38.Meine Frage lautet: wie komme ich auf die Stellen wenn ich den Wert habe.
Hat jemand zufällig einen Algorithmus? oder kennt jemand einen Link wo ich
nachschauen kann?[edit by kingruedi]
bitte bitte benutz doch ein vernünftiges Topic. Für das falsche Forum kannst du dich auch später entschuldigen, dass gehört nicht in das Topic.
Übrigens ist das eher eine Mathefrage und kommt in das Matheforum
siehe " hf "[/edit]
-
Was genau willst du machen? Mir fallen spontan 2 Möglichkeiten ein:
%2 machen, diese Stelle ist gesetzt
/2 gibt den nächsten wert zum %2 rechnen
wiederholen bis der wert kleiner als 2 ist.mithilfe von & kannst du einzelne Stellen testen.
-
Ich muss mich entschuldigen, dass ich es viellecht nicht richtig erklärt habe.
In meinem Programm benutze ich ich eine IO-Karte, die 16 Eingänge hat. Wenn
Eingang 1 gesetzt ist bekomme ich als Ergebnis eine 1, bei Eingang 3 lautet das Ergebnis 4, usw... Wurden z.B. die Eingänge 4, 6 und 10 gesetzt, dann erhalte ich einen Wert von 552. Wie bekomme ich aus dieser Zahl heraus, dass
die Eingänge 4, 6 und 10 gesetzt worden sind?
-
Also für mich sieht das aus, als würde da jemand mit Bit´s arbeiten.
Eingange
10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | = Nummer
1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | = Bit´s 0 = aus 1 = ein
512 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | = Dez.Wert
-----------------------------------------------------------------------
512 + 32 + 8 | = Ergebnis = 552Ich kann mich irren, ist aber unwarscheinlich.
Ist etwas unübersichtlich (aufgrund der Formatierung), aber bei Ergebnis sind die Werte der Eingänge 10, 6 und 4 zurückgegeben.
Mußt halt die Zahlen untereinander setzen.
-
das ist lösung 1 etwas abgewandelt.
552%2 = 0 // Eingang 1
552/2 = 276
276%2 = 0 // Eingang 2
276/2 = 138
138%2 = 0 // Eingang 3
138/2 = 69
69 %2 = 1 // Eingang 4
69 /2 = 34 // abrunden!
34 %2 = 0 // Eingang 5
34 /2 = 17
17 %2 = 1 // Eingang 6
17 /2 = 8
8 %2 = 0 // Eingang 7
8 /2 = 4
4 %2 = 0 // Eingang 8
4 /2 = 2
2 %2 = 0 // Eingang 9
2 /2 = 1
1 %2 = 1 // Eingang 10
Fertig weil nur was < 2 über ist.Ich glaube das passt so.
-
Ich find den zweiten Weg schöner:
(552 & 1) //Eingang 1
(552 & 2) //Eingang 2
(552 & 4) //Eingang 3
(552 & //Eingang 4
.
.
.
.
.
(552 & 512) //Eingang 10
-
Bloops schrieb:
Ich find den zweiten Weg schöner:
Na so berechnet man das ja auch. Na ja, man packt es halt noch in einer Schleife.
Ich habe ihm lediglich das Prinzip erklärt.