Ho bisogno di trovare l'ordine più alto 1 in alcuni long, ints e short in Java. Ad esempio, se avessi un carattere simile a 00110101
, ho bisogno di un metodo che restituirà 2 (indice del più alto ordine 1).Trovare l'ordine più alto 1 in un primitivo Java
Ora, so che si può fare questo usando un ciclo for come:
for(int i=0; i<8; i++)
if((x & 1<<i) != 0) return i;
return -1;
, ma questo è il modo più lento di quello che voglio fare. So che le moderne CPU hanno istruzioni che lo fanno su chip, quindi voglio sapere come posso effettuare una chiamata a questo piuttosto che avere un ciclo esplicito.
MODIFICA: punti bonus se è possibile restituire gli indici di tutti quelli nella primitiva.
Grazie.
Sei in esecuzione su una macchina big endian? – int3
Avevo l'impressione che Java gestisse le endianess a modo suo nella JVM, ma supponendo che non funzionasse, userò un Intel C2D, così poco endian. – twolfe18
Eseguendo il codice, ottengo 0, non 2. – Buhb