Rückrechnung

  • Es geht mal wieder um Kopfkino !!!

    Ich hatte folgende Idee. Aus der Möglichkeit verschiedene Auswahlen zu treffen wollte ich einen "eindeutigen mathematischen Wert" (Zahl) ermitteln. Das klappt auch, wenn ich nicht irgendwo ein gedanklichen Querrschläger in den Beispielen haben.

    Aber wie rechnet man das richtig zurück ???


    Ja, jetzt sehe ich schon einige die ihre Hände über dem Kopf zusammen schlagen und denken: "Was geht das in Kopf ab?" Ich kann nur sagen: "Alles halb so schlimm!" :rofl:

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Du bist da schon auf dem richtigen Dampfer ;)
    Was du tust ist jedem Bit einen gewissen Sinn zu verleihen. z.B. ist Montag das erste bit, Dienstag das 2te usw. Im Endeffekt sind also alle Zahlen die du benutzt in Binärdarstellung soetwas wie ...00000100000.... Wenn man diese alle Addiert kommt soetwas heraus 001010110101100. Dabei steht jedes Bit für eine Variable. Um diese Bits aus der Zahl wieder zu extrahieren kann man sehr einfach BitAnd benutzen. z.B. um aus 00010010101100 die letzten 7 Stellen (für die 7 Tage) zu bekommen nimmt man einfach BitAnd und die Zahl 127 (1111111b).

    Edit: Das funktioniert natürlich nicht sooo einfach, wenn man z.B. Mehrere Werde aus einer Sparte gewählt hat. z.B. wenn man Di und So wählt erhält man bei Tag: 66. Diese Zahl muss man dann nach dem gleichen Prinzip wieder auseinandernehmen, wenn man es genau wissen will. 66 = 1000010b. (Da kann man direkt ablesen welche Tage gesetzt sind)

    lg
    M

  • Evtl ist es besser verständlich, wenn du selber siehst, welche Bits gesetzt sind.
    Dazu hätte ich eine Funktion im Angebot:

    lgE

  • Das von Euch beiden ist ja echt lieb und ich verste was da passiert, nun ich weiß nicht, wie ich das nutzen kann, um im ersten Beitrag nun die Rückrechnung durchführe.

    Die Zahl z. B. 35338 muss ungerechnet werden und dann wie zurück gerechnet werden? Monatlich in der 2. und 4. Woche an Dienstag und Donnerstag sähe theoretisch so aus:

    35338 = 1000101000000010 ; 16 stellige Zahl
    32768 = 1000000000000000 ; an 16. Stelle von re. ist eine "1", somit 32768 ---> Monatlich
    2048 = 0000100000000000 ; an 12. Stelle von re. ist eine "1", somit 2048 ---> 4. Woche
    512 = 0000001000000000 ; an 10. Stelle von re. ist eine "1", somit 512 ---> 2. Woche
    8 = 0000000000001000; an 5. Stelle von re. ist eine "1", somit 8 ---> Donnerstag
    2 = 0000000000000010 ; an 2. Stelle von re. ist eine "1", somit 2 ---> Dienstag

    Theorie & Praxis :(

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Du könntest das so machen:

    AutoIt
    Global $aArray[22][2] = [[0, "täglich"], [0x1, "mo"], [0x2, "di"], [0x4, "mi"], [0x8, "do"], [0x10, "fr"], [0x20, "sa"], [0x40, "so"], [0x80, "wöchentlich"], [0x100, "1.WO"], [0x200, "2.WO"], [0x400, "3.WO"], [0x800, "4.WO"], [0x1000, "5.WO"], [0x2000, "gerade WO"], [0x4000, "ungerade WO"], [0x8000, "monatlich"], [0x10000, "monatlich gerade"], [0x20000, "monatlich ungerade"], [0x40000, "nix"], [0x80000, "viertteljaehrlich"], [0x100000, "jaehrlich"]]
    
    
    $iX = 35338
    For $i = 0 To UBound($aArray) - 1
    	If BitAND($iX, $aArray[$i][0]) Then ConsoleWrite($aArray[$i][1] & @CRLF)
    Next
  • Okay, sieht gut aus.

    Erkläre mir doch mal, wie Du auf folgenden Wert kommst: [0x10, "fr"]
    Wieso nicht [0x16, "fr"]?

    Damit erklärt sich ja auch, wieso es später dann nicht mit 32,64,128,... weiter geht. Das möchte ich gerne verstehen.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Das liegt an der Hexadezimaldarstellung.

    Hex Dez Bin
    0x1 1 000001
    0x2 2 000010
    0x4 4 000100
    0x8 8 001000
    0x10 16 010000
    0x20 32 100000
    usw ... ...


    Dann braucht man nicht so "krumme" große Zahlen :)

  • Okay, das habe ich dann mal verstanden. !?

    Der Hex-Wert verdoppelt sich ab 0x10 dann jedes mal.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Jop. Die einzige Sache bei der man aufpassen muss ist 0x8. Denn 0x8 * 2 = 0x10 und 0x80 * 2 = 0x100, usw. Das geht unserem Kopf der im Dezimalsystem arbeitet manchmal etwas gegen den Strich ;)

  • Meinst Du das hier?
    0x80 =
    0x100 =
    0x800 =
    0x1000 =
    Noch nicht mal auf die DEZ bzw. BIN gekommen die dann genutzt werden kann.
    Muss ich morgen mal schauen.

    DANKE !!!

    Edit: Dank Excel ging es schnell !!!

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    3 Mal editiert, zuletzt von Alina (16. November 2015 um 14:54)

  • Das ist auch mal eine Berechnung, oder?

    Mal gefragt: "Daraus könnte man doch sicherlich eine Funktion (dez2bin) erstellen, oder? Gobt es das schon? Wenn ja dann überflüssig! ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Deine Excel-Tabelle ist falsch!

  • :rock: Danke Aspirinjungie & Eukalyptus :thumbup:

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    Einmal editiert, zuletzt von Alina (16. November 2015 um 15:13)