Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C] Wyodrębnianie kilku bitów

Ostatnio zmodyfikowano 2013-07-05 17:53
Autor Wiadomość
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ć. ;(
P-87058
pekfos
» 2013-07-05 17:43:12
Użyj koniunkcji bitowej. By wyodrębnić 4 najmłodsze bity, musisz użyć
x & 15
.
P-87059
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. :)
P-87060
« 1 »
  Strona 1 z 1