2010-02-11 16 views
14

Estoy buscando un algoritmo eficiente en C para transponer en bits 8 bytes de datos. Lo que quiero decir con esto es que si tengo 8 bytes como este:Transposición a través de bit de 8 bytes

00011100 
00111000 
00000001 
00000000 
11000000 
00000000 
11111111 
01010101 

que desee obtener los siguientes 8 bytes:

00001010 
00001011 
01000010 
11000011 
11000010 
10000011 
00000010 
00100011 

Y como yo quiero usar esto en una plataforma integrada, debe ser lo más rápido posible :-)

¡Todas las ideas son muy apreciadas!

+2

¿Qué significa esto? No veo la relación entre la entrada y la salida deseada. ¿Desea utilizar una tabla de búsqueda simple (256 bytes)? –

+5

@Richard: Es una matriz transpuesta; fila se convierten en columnas y viceversa. Si lee la columna más a la izquierda del resultado, es igual a la primera fila de la entrada. Como hay 64 bits de entrada independientes, una tabla de consulta se vuelve ... grande. – unwind

+0

Las columnas están recibiendo filas y viceversa. – tur1ng

Respuesta

18

Consulte Hacker's Delight, Capítulo 7-3.

+0

Gracias. ¡Esto es exactamente lo que estaba buscando! –

+0

@Arnaud, eso es genial ... pero ¿qué es una aplicación que requeriría esta función? – vicatcu

+0

@vicatcu Esto es útil si necesita generar 8 flujos de datos en serie en un puerto de E/S ancho de un byte, por ejemplo. – jms

Cuestiones relacionadas