¿Existe un algoritmo eficiente (rápido) que realice la expansión/duplicación de bits?Algoritmo para la expansión/duplicación de bits?
Por ejemplo, expanda cada bit en un valor de 8 bits por 3 (la creación de un valor de 24 bits):
1101 0101 => 11111100 01110001 11000111
El método de fuerza bruta que se ha propuesto es la creación de una tabla de búsqueda. En el futuro, el valor de expansión puede necesitar ser variable. Es decir, en el ejemplo anterior, estamos ampliando en 3, pero puede ser necesario expandirlo por algún otro valor (es). Esto requeriría varias tablas de búsqueda que me gustaría evitar si es posible.
Si solo se trata de valores de 8 bits, es casi seguro que la tabla de búsqueda sea la mejor opción. Utiliza muy poco espacio. ¿Puede dar más detalles sobre su caso de uso y qué operaciones espera que sean comunes? – templatetypedef
La entrada es un flujo de bits en serie constante. En el requisito actual, cada fragmento de datos llega a 8 bytes a la vez, que luego necesita que cada bit se expanda en 3 para que se envíe como otro flujo de bits. 64bits en 192bits de salida. Un requisito futuro puede implicar la adición de bits de "encabezado" antes de cada valor expandido de 8 bits y, por supuesto, el relleno a un límite de bytes. Las LUT son rápidas, pero dada la frecuencia con la que debe ejecutarse, se apreciará cualquier posible mejora en el rendimiento. – jivany
Muchas arquitecturas tienen instrucciones que pueden acelerar mucho este tipo de cálculos. Si no teme romper la compatibilidad multiplataforma, aprovechar estas instrucciones es casi seguro una ganancia, y si está optimizando algo algorítmicamente "trivial", entonces la clave es la optimización de bajo nivel. – Kaganar