ho bisogno di estrarre po 'certa varia da con un lungo valore, ad esempio:Java ottenere intervalli di bit da una lunga
long input = 15367 (11110000000111)
Che cosa devo quindi fare è estrarre due valori lunghi dalla lunga originale,
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)
so che questo può essere fatto con po 'di spostamento e mascheramento, però io non sono del tutto sicuro di come implementare che quindi è dinamica di volta in volta, come ogni volta che ho bisogno di fare questo, alla lunga sarà diverso e così pure gli intervalli di bit specifici.
Ho letto di BitSet e BitArray, tuttavia non sono del tutto sicuro che queste siano le cose giuste per il lavoro.
Qualsiasi consiglio sul modo migliore per implementarlo sarebbe molto apprezzato.
Grazie!
Solo il biglietto, grazie FGE! – Tony
Non '' '' '' 'funzionante anche perché' & 'alla fine rimuoverà il segno esteso' 1's? (caso d'angolo a tuo favore: estrai bit al di fuori dei limiti più a sinistra del tuo input, ad esempio nrBits = 32, offset> 32) – zapl
No, non lo farebbe. Dì (con 8 bit per semplificare) che hai '10001111' e vuoi estrarre tre bit a partire dall'offset 3: se usi' >>> ', lo spostamento a destra dà' 00010001', ma con '>>' sarebbe diamo '11110001' (il bit del segno è trasportato). – fge