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*
    ­čÖé


Log in to reply