Extracción de bits con una sola multiplicación.

Vi una técnica interesante utilizada en unaresponder aotra pregunta, y me gustaría entenderlo un poco mejor.

Se nos da un entero de 64 bits sin firmar, y estamos interesados ​​en los siguientes bits:

1.......2.......3.......4.......5.......6.......7.......8.......

Específicamente, nos gustaría moverlos a las ocho mejores posiciones, así:

12345678........................................................

No nos importa el valor de los bits indicados por., y no tienen que ser preservados.

lossolución era enmascarar los bits no deseados, y multiplicar el resultado por0x2040810204081. Esto, como resulta, hace el truco.

¿Qué tan general es este método? ¿Se puede utilizar esta técnica para extraer cualquier subconjunto de bits? Si no es así, ¿cómo se determina si el método funciona o no para un conjunto de bits en particular?

Finalmente, ¿cómo se podría hacer para encontrar el multiplicador correcto (a?) Para extraer los bits dados?

Respuestas a la pregunta(2)

Su respuesta a la pregunta