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.

[C][AVR] - zamiana kolejności bitów LSB->MSB

meehowk3 01 Paź 2012 20:45 2199 8
  • #1 01 Paź 2012 20:45
    meehowk3
    Poziom 10  

    Witam,
    jak zamienić kolejność bitów?
    Np.: 00110001 na 10001100.

    Napisałem coś takiego ale nie działa:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Proszę o sugestie
    Pozdrawiam

    0 8
  • #2 01 Paź 2012 20:47
    tadzik85
    Poziom 38  

    Kod: C
    Zaloguj się, aby zobaczyć kod
    Cała funkcja jest zła. zacytowana funkcja nie robi tego co w komentarzu i modyfikuje bajt wejściowy

    0
  • #3 01 Paź 2012 20:54
    tronics
    Poziom 36  

    Cytat:
    jak zamienić kolejność bitów

    Zdaje mi się, że temat był już poruszany i jedną z dość przystępnych metod jest wydzielenie 256 (255 - bo po co zero odwracać) elementowej tablicy we flash gdzie danemu indeksowi x będzie odpowiadała wartość będąca odwróceniem wartości binarnej indeksu.
    coś jak:
    x____________________ y
    00000001_____________10000000
    00000010_____________01000000
    00000011_____________11000000
    ...

    0
  • #4 01 Paź 2012 21:04
    tadzik85
    Poziom 38  

    tronics marnotrawienie pamięci

    0
  • #5 01 Paź 2012 21:11
    tronics
    Poziom 36  

    Gdyby to było 89s52 to bym nie proponował, ale to AVR ;) Bierze pamięć owszem, ale masz wynik szybciej niż 8 krotna iteracja bit shift wartości wejściowej i wyłuskania wartości bitu + załączenie danego bitu w obróconej zmiennej. Ale jak kto lubi. Jest wiele dróg prowadzących do rozwiązania 1 problemu.

    0
  • #6 01 Paź 2012 21:23
    perlon
    Poziom 19  

    Może coś takiego

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #7 01 Paź 2012 21:31
    meehowk3
    Poziom 10  

    Panie tadzik85, cała funkcja jest zła czy tylko zacytowana przez pana linijka kodu?

    0
  • Pomocny post
    #8 01 Paź 2012 21:32
    tadzik85
    Poziom 38  

    Kod: c
    Zaloguj się, aby zobaczyć kod

    optymalna wersja poprawnej funkcji

    0
  • #9 01 Paź 2012 22:03
    meehowk3
    Poziom 10  

    Działa!
    Dziękuje bardzo Panowie za zaangażowanie.
    Wygrał Pan tadzik85:)
    Pozdrawiam

    0