Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

przeliczenie wartości funkcją XOR

LWD11 04 Cze 2016 12:11 825 8
  • #1 04 Cze 2016 12:11
    LWD11
    Poziom 27  

    Witam, potrzebuję posiąść wiedzę jak działa algorytm liczenia poniższego równania, podobno wartości są przeliczone funkcją XOR, ale nie za bardzo mogę tego rozgryźć, funkcje xor pamiętam ze szkoły z układów logicznych ni jak moge jej tu wykorzystać...

    przykłady : 64 60 61 66 wynik 1 5 4 3

    65 67 65 66 wynik 0 2 0 3

    65 63 68 62 wynik 0 6 6 7

    64 61 64 69 wynik 1 4 1 1

    Proszę kolegów o wyrozumiałość i za być może śmieszne pytanie, skąd biorą się ów wartości.

    0 8
  • #2 04 Cze 2016 12:36
    curdeballans
    Poziom 24  

    przykłady : 64 60 61 66 wynik 1 5 4 3

    wtedy 1543 Xor xxxx = 4016
    dlatego 4016 Xor xxxx=1543

    0
  • #3 04 Cze 2016 12:45
    lelekx
    Poziom 29  

    Zakładam, że wszystkie liczby są w zapisie dziesiętnym. Gdyby nie liczba 69 w linii "64 61 64 69 wynik 1 4 1 1", wzór byłby wynik = (liczba & 7) ^ 1

    0
  • #5 04 Cze 2016 12:58
    lelekx
    Poziom 29  

    curdeballans napisał:
    przykłady : 64 60 61 66 wynik 1 5 4 3

    wtedy 1543 Xor xxxx = 4016
    dlatego 4016 Xor xxxx=1543

    xxxx=???? -już proste?


    4016 xor 1543 = 5756 xor 0203 ≠ 5382 xor 0667 ≠ 4149 xor 1411

    0
  • #6 04 Cze 2016 13:15
    LWD11
    Poziom 27  

    coś słabo ten algorytm pojmuje, ... no dobrze, to teraz inaczej

    a poniższa wartość mając na względzie algorytm wyników w pierwszym poście

    64 61 62 63

    jaki będzie miała wynik i dlaczego

    / zapis szesnastkowy jak zasugerował kolega curdebalans /

    0
  • Pomocny post
    #7 04 Cze 2016 20:56
    lelekx
    Poziom 29  

    Nie zgadza mi się coś, nie wygląda mi to na proste XOR

    Code:

    60   5   0000   0101
    61   4   0001   0100
    62   7   0010   0111
    63   6   0011   0110
    64   1   0100   0001
    65   0   0101   0000
    66   3   0110   0011
    67   2   0111   0010
    ----------
    68   6   1000   0110
    69   1   1001   0001


    Fragment do kreski zgadza się, przyjmując że Wynik=(Liczba & 7) ^ 5
    Pod kreską jest inaczej, zmiana jednego bitu na wejściu powoduję zmianę trzech bitów na wyjściu. Sprawdź, czy nie zrobiłeś błędu wpisując dane z liczbami 68 lub 69.

    0
  • Pomocny post
    #8 04 Cze 2016 21:40
    JRV
    Specjalista - VBA, Excel

    Nie idzie tylko 68 i 69:
    Wynik = ( liczba XOR 65 ) Mod 120

    0
  • #9 04 Cze 2016 22:49
    LWD11
    Poziom 27  

    Nieźle, świetnie panowie to rozgryźli, lelekx fajnie to zobrazował, z góry dziękuje :)

    Generalizując,... chodziło mi o zrozumienie algorytmu liczenia kodu 4 cyfrowego który realizuje pewien kalkulator do liczenia ów kodu z pewnego radia samochodowego. Powinienem zamieścić info na wstępie postu że wynik jest zawsze 4 cyfrowy i pierwsza cyfra ma zawsze wartość 1 lub 0, to dlatego pewnie są te wyjątki z 68 i 69 (to możliwe ?) Póki co, wielkie dzięki za pomoc i za zainteresowanie moim tematem. :)

    0