quizfrage: was macht diese funktion?



  • int was_mache_ich (unsigned char b, int o, int e)
    {
      b = b ^ b >> 4;
      b = b ^ b >> 2;
      return o ^ e ^ (b ^ b >> 1) & 1;
    }
    

    ^^wer kommt drauf?
    🙂



  • Wahrscheinlich 0 zurückgeben oder so?



  • _matze schrieb:

    Wahrscheinlich 0 zurückgeben oder so?

    bitte nur ernstgemeinte anworten,
    dass du's rauskriegst, hab ich auch nicht erwartet *fg*
    🙂



  • hat keine 'ne idee?
    hinweis: b darf 0...255 sein, o und e dürfen beide entweder 0 oder 1 sein.
    der output ist auch 0 oder 1.
    so, und jetzt enttäuscht mich nicht...
    🙂



  • berechnet die parität von b, aber o und e können jeweils die logik umdrehen. außerdem ist es nicht für einen pc, sonst hättest du b durch die alu geschickt und das parity-flag gelesen.
    b könnte ein empfangenes zu prüfendes byte sein,
    o das dabei mitempfangene parity-bit
    e der modus ob odd oder even
    und der rückgabewert, ob kein 1-bit-übertragungsfehler passieret ist.



  • volkard schrieb:

    berechnet die parität von b, aber o und e können jeweils die logik umdrehen. außerdem ist es nicht für einen pc, sonst hättest du b durch die alu geschickt und das parity-flag gelesen.
    b könnte ein empfangenes zu prüfendes byte sein,
    o das dabei mitempfangene parity-bit
    e der modus ob odd oder even
    und der rückgabewert, ob kein 1-bit-übertragungsfehler passieret ist.

    absolut richtig. die funktion generiert aus einem gesendeten 9 bit-wort das letzte bit, indem von den empfangenen 8 bits (b) die parity berechnet, dann mit dem parity-error bit des UART (e) verknüpft und durch die einstellung (o, 1==odd, 0==even) eventuell umgedreht wird.
    volkard, du machst mir angst *fg*
    🙂


Anmelden zum Antworten