I trzeba wyodrębnić pewne nieco waha się od z długim wartości, na przykład:Java dostać zakresy bitowych z długim
long input = 15367 (11110000000111)
Co muszę wtedy zrobić, to wyodrębnić dwa długie wartości od oryginału długo,
First long is 5 bits starting from bit 0, so bits 0:4 = 7 (0111)
Second long is 56 bits starting from bit 8, so bits 7:55 = 60 (1111000)
wiem, można to zrobić z nieco przesunięcia i maskowanie, jednak nie jestem do końca pewien, jak wdrożyć, że tak to dynamiczny za każdym razem, jak za każdym razem muszę to zrobić, długo będzie inna , a także będzie określony zakres bitów.
Czytałem o BitSetach i BitArray, jednak nie jestem do końca pewien, czy są to odpowiednie rzeczy do wykonania tej pracy.
Wszelkie porady na temat najlepszego sposobu realizacji tego będą bardzo mile widziane.
Dzięki!
tylko bilet, dzięki FGE! – Tony
Czy ">>" nie działałoby, ponieważ '&' na końcu usunie znak rozszerzony '1's? (Przypadek rogu na twoją korzyść: wyodrębniasz bity poza lewe skrajne wejście, np. nrBits = 32, przesunięcie> 32) – zapl
Nie, nie byłoby. Powiedz (z 8 bitami, aby uprościć), że masz '10001111' i chcesz wyodrębnić trzy bity zaczynając od przesunięcia 3: jeśli użyjesz' >>> ', prawe przesunięcie daje' 00010001', ale z '>>' byłoby daj "11110001" (bit znaku jest przenoszony). – fge