2010-04-02 6 views
2

Y at-il moyen intelligent de mélanger deux séquences de bits de telle sorte que les bits de la première séquence est sur les endroits impairs, et les bits de second ordre sera le même endroits.
Les deux séquences ne sont plus que de manière 16b sortie insérer dans nombre entier de 32 bits.mélange de deux séquences de bits

Exemple:

First sequence : 1 0 0 1 0 0 
Second sequence : 1 1 1 0 1 1 
Output   : 1 1 0 1 0 1 1 0 0 1 0 1 

Je pensais à faire tableau entier de la taille 2^16 et la sortie serait:

arr[first] << 1 | arr[second] 
+5

http://graphics.stanford.edu/~seander/bithacks.html#InterleaveBMN – kennytm

+0

KennyTM: Postez-le comme une réponse pour que je puisse l'accepter. –

Répondre

1

en C#:

public Int32 Mix(Int16 b1, Int16 b2) 
{ 
    Int32 res = 0; 
    for (int i=0; i<16; i++) 
    { 
    res |= ((b2 >> i) & 1) << 2*i; 
    res |= ((b1 >> i) & 1) << 2*i + 1; 
    } 
    return res; 
} 
+0

Je sais comment le faire en utilisant la boucle for ... –

+2

désolé, il n'a pas été mentionné dans votre question ... :) – PierrOz