Mikrokontrolery - Jak zacząć?

... czyli zbiór praktycznej wiedzy dot. mikrokontrolerów.

środa, 9 lutego 2011

Zamiana bajtów (swap)


Autor: Dondu

Kurs języka C: Tips & Tricks - Spis treści


Język C nie oferuje instrukcji zamiany bajtów liczby 16-bitowej (typ: short). Taką zamianę należy realizować własnym kodem.

Poniżej przykład oparty o przesunięcia bitowe. Wykorzystujemy tutaj priorytety języka C oraz fakt, iż podczas przesuwania tracone są "wypadające bity". W rezultacie otrzymujemy liczbę z zamienionymi miejscem bajtami.

Zobacz jak to działa w kompilatorze CManiak.

Przykład 1 (w kompilatorze)
  //zmienna 16-bit, której bajty chcemy zamienić miejscami
  unsigned short a = 0x1234; 

  //zamień bajty
  a = (a<<8) | (a>>8);  

Możesz oczywiście zdefiniować sobie funkcję, która ułatwi Ci wykorzystanie kodu w swoim programie.

Przykład 2 (w kompilatorze)
//funkcja zamieniająca bajty 
short swap_bytes(unsigned short temp){
  return (temp<<8) | (temp>>8);  
}

int main(void){
  //zmienna 16-bit, której bajty chcemy zamienić miejscami
  unsigned short a = 0x1234;
  //zamień bajty wykorzystując zdefiniowaną wyżej funkcję
  a = swap_bytes(a);  
}

Działanie przykładu nr 2 także możesz sprawdzić w kompilatorze CManiak.


Kurs języka C: Tips & Tricks - Spis treści

31
Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

2 komentarze:

  1. nie ma sensu tu stosować funkcji. Dużo lepszym pomysłem byłoby makro preprocesora (nie korzystamy w funkcji ze stosu, więc byłoby po prosti szybciej)

    OdpowiedzUsuń
    Odpowiedzi
    1. Raczej powinno się za wszelką cenę unikać makr. W tym przypadku makro nic nie daje - kompilator nie jest głupi i taką prostą funkcję osadzi w miejscu wywołania, w związku z tym nie będzie żadnych narzutów.

      Usuń

Działy
Działy dodatkowe
Inne
O blogu




Dzisiaj
--> za darmo!!! <--
1. USBasp
2. microBOARD M8


Napisz artykuł
--> i wygraj nagrodę. <--


Co nowego na blogu?
Śledź naszego Facebook-a



Co nowego na blogu?
Śledź nas na Google+

/* 20140911 Wyłączona prawa kolumna */
  • 00

    dni

  • 00

    godzin

  • :
  • 00

    minut

  • :
  • 00

    sekund

Nie czekaj do ostatniego dnia!
Jakość opisu projektu także jest istotna (pkt 9.2 regulaminu).

Sponsorzy:

Zapamiętaj ten artykuł w moim prywatnym spisie treści.