Argument erweiterung durch "|"

  • Argument erweiterung durch "|"

    Moin leute!
    Mir geht so wat komisches durch den kopp.
    Ja!
    Ihr habt mich richtig verstanden!
    Ich habe ne Frage....

    Was hat das "|" bei den argumenten auf sich?

    Bsp:

    GML-Quellcode

    1. soc_create(SOC_TCP|SOC_LISTEN, 4662);


    Auch wenn man sowas macht:

    GML-Quellcode

    1. hi = "Hi Variable"
    2. boo = "Boo dingen"
    3. show_message(hi|boo)

    kommt nix error beim Fehlerchecken (außer wenn man das teil durchjagt ;) )!

    Was ist das nu genau?

    Wofür braucht man das?
    Ist das sozusagen theoretisch sowas: ?

    GML-Quellcode

    1. soc_create(SOC_TCP, 4662);
    2. soc_create(SOC_LISTEN, 4662);



    Bitte helft mir!
    Ich verzweifel.............
  • ich kenn das pipe nur als oder, d.h.:
    du brauchst die zahlen in binaerer schreibweise, schreibst sie praktisch untereinander, und ueberall dort wo mindestens eines der beiden bits 1 ist ist das ergebniss bitr 1, bsp:

    Quellcode

    1. 1100
    2. 1010
    3. ----
    4. 1110


    ich hoffe das ist verstaendlich, das theme ist recht komplex, soll heisen kann ich hier jetzt nicht ausbreiten, und ich weis auch nicht obs im gm auch so ist.
  • Ja, | ist ein bitweises oder.
    Und bevor noch ein Thread aufgemacht wird, es gibt auch & für bitweises und, und ^ für bitweises exklusives oder.

    Dieses bitweise oder wird bei der SOCK Dll zum kondensieren von Variablen benutzt. Damit kann man verschiedene Eigenschaften in einer einzigen Zahl unterbringen.

    Siehe da speziell im GML Tutorial Abschnitt III in Kapiteln 4 und 5 nach. Da wird der praktische Nutzen und das Benutzen genau erläutert.
    "Die Erde ist ein Irrenhaus. Dabei könnte das bis heute erreichte Wissen der Menschheit aus ihr ein Paradies machen. Dafür müsste die weltweite Gesellschaft allerdings zur Vernunft kommen."
    - Joseph Weizenbaum
  • ok, foods, pass auf. Booleansche logik. Boolean heist es gibt nur an und aus. an = 1, aus = 0.
    man kann wie mit normalen+ operatoren z.B. mit speziellen operatorn diese verknuepfen:

    UND (and):
    1 && 1 = 1
    1 && 0 = 0
    0 && 1 = 0
    0 && 0 = 0

    ODER (or):

    1 || 1 = 1
    1 || 0 = 1
    0 || 1 = 1
    0 || 0 = 0

    ENTEDER ODER (xor):
    1 ^^ 1 = 0
    1 ^^ 0 = 1
    0 ^^ 1 = 1
    0 ^^ 0 = 0

    So kann man wahrheitswerte verknuepfen. Man kann auch Integer (also ganze zahlen) so verknuepfen.
    Dazu braucht man sie in Binaerer form (das macht der gm automatisch alles!!) und vergleicht sie so bit für bit. Das ergebniss bit ist denn das bit das da raus kommt. Also nochmal:

    Quellcode

    1. 1234
    2. 1100
    3. 1010
    4. oder
    5. 1110


    Es wird das 1. bit der 1. zahl mit dem 1ten bit der 2 zahlö verglichen, und im ergebniss ist dann das erste bit das resultat daraus. diese operatoren haben nur ein zeichen! Und so weiter halt mit allen bits.


    Und wo ist der sinn? Das geht über diesen post herraus. Wir können mit dem verhalten zum beispiel bits einzeln auslesen und verändern. Ohne die anderen anzutasten.
    Verwendungszweck ist zum beispiel im IP um die Broadcast und Netzwerkbasis adressen zu ermitteln, ist aber wie ich sagte zuviel für den post....

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von boxxar ()

  • Danke WA.
    Habs mir durchgelesen.
    (Und sogar teilweise verstanden :D)

    Das nächste ma für die anderen ein "Beitrag editiert..." anhängen ;P

    @boxxar:
    Das mit && und || und ^^ wusste ich schon. ^^


    EDIT:
    Danke euch beiden.
    Ihr habt mir sehr geholfen. :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von FOODy ()

  • Benutzer online 1

    1 Besucher