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 = 552

    Ich 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.


Anmelden zum Antworten