Czy mógłby mi ktoś wytłumaczyć co oznacza ten fragment kodu? - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Programowanie w Arduino (https://forum.arduinopolska.pl/dzial-programowanie-w-arduino) +--- Wątek: Czy mógłby mi ktoś wytłumaczyć co oznacza ten fragment kodu? (/watek-czy-m%C3%B3g%C5%82by-mi-kto%C5%9B-wyt%C5%82umaczy%C4%87-co-oznacza-ten-fragment-kodu) |
Czy mógłby mi ktoś wytłumaczyć co oznacza ten fragment kodu? - Askabius - 23-11-2020 Hej! Mam problem ze zrozumieniem tego konkretnego kawałka kodu: Kod: uint32_t rgb = (uint32_t) strtol((const char *) &payload[1], NULL, 16); Dokładnie chodzi mi o całą pierwszą linijkę oraz argumenty typu: Kod: ((rgb >> 16) & 0xFF)); Mógłby ktoś na szybko powiedzieć co to robi lub chociaż poratować jakimś linkiem? Gdyż nawet nie bardzo wiem pod jakim hasłem wyszukać informacji w tym temacie. Z góry dzięki za pomoc RE: Czy mógłby mi ktoś wytłumaczyć co oznacza ten fragment kodu? - Jarewa0606 - 23-11-2020 Poczytaj o przesunięciach bitowych, czyli szybkim mnożeniu i dzieleniu.. rgb >>16 przesuwa w prawo o 16 bitów czyli dzieli RGB/ 2^4 dany wynik jest porównywany "&" 0xFF (czyli z 255) operacje bitowe 0xFF w formie binarnej to 0000000011111111 kiedy rgb podzielone da nam wynik np,100 to w formie binarnej 0000000001100100 i to porównanie da nam wynik 0000000011111111 0000000001100100 0000000001100100 wynik 100 Te "& 0xFF" jest tylko po to żeby zawsze podzielona liczba dała nam max 255... Bo jeśli jakimś cudem podzielone RGB da nam więcej niż 255 dajmy na to 300 wiec w postaci binarnej 0000000100101100 0000000011111111 0000000100101100 0000000000101100 to porównanie skróci nam do 44 |