[C] Wyodrębnianie kilku bitów
Ostatnio zmodyfikowano 2013-07-05 17:53
Xynxyn Temat założony przez niniejszego użytkownika |
[C] Wyodrębnianie kilku bitów » 2013-07-05 17:31:55 Mam problem, otóż mam 32-bitową liczbę, przykładowo: (kropki orientacyjnie) Dwójkowo - 0010.0110.1001.0111.1111.0000.1010.0101
Chcę wyodrębnić tylko ostatnie 4 bity, żeby zostało 0101. (tzn 0000.0000.0000.0000.0000.0000.0000.0101) Jak szybko to zrobić? Czy dużo czasu zajmie to używając operacji bitowych? Da się to inaczej zrobić? I chciałbym się tez dowiedzieć, czy jest różnica w prędkości kiedy zrobię 1 << x, zamiast np 3 << x? :) Z góry dziękuję za odpowiedzi.
Jeśli nie ma innej opcji niż takie 28 << x; x >> 28; to będę musiał tak niestety zrobić. ;( |
|
pekfos |
» 2013-07-05 17:43:12 Użyj koniunkcji bitowej. By wyodrębnić 4 najmłodsze bity, musisz użyć x & 15 . |
|
Xynxyn Temat założony przez niniejszego użytkownika |
» 2013-07-05 17:53:08 To już wiem jak dalej to robić. ;)
Do 4ech bitów: Najmłodszych: x & 15 2. od końca: x & 240 3. od końca: x & 3840 4. od końca: x & 61440 4. od początku: x & 983040 3. od początku: x & 15728640 2. od początku: x & 251658240 1. od początku: x & 4026531840
Chociaż łatwiej będzie pisać: x & 0xF, x & 0xF0, x & 0xF00,... itd.
100-krotne dzięki, pekfos. :) |
|
« 1 » |