Achso, ich dachte, du brauchst die andere Richtung...
Hab grad aml was gehackt und das scheint es zu tun. Frag nicht, wie ich drauf komme, ist mathematische Intuition... *fg*
Code:
import java.io.*;
public class Gray
{
public static void main (String[] args)
{
System.out.println ("Hallo Welt!");
int n = 2;
try
{
if (args.length >= 1)
n = Integer.parseInt (args[0]);
}
catch (Exception ex) {}
System.out.println ("n = " + n);
for (int i=0; i < (1 << n); i++)
{
int dec = 0;
int ii = i;
for (int b = n-1; b >= 0; b--)
{
if (0 != (ii & (1 << b)))
{
dec |= (1 << b);
ii ^= 0xffffff;
}
}
System.out.println ("[" + i + "] -> " + dec);
}
}
}
i Läuft von 0 bis 2^n und wird Gray-decodiert. Scheint zu stimmen 
In C sieht's dann genauso aus.
Code:
D:\java\sources>java -cp . Gray 4
Hallo Welt!
n = 4
[0] -> 0
[1] -> 1
[2] -> 3
[3] -> 2
[4] -> 6
[5] -> 7
[6] -> 5
[7] -> 4
[8] -> 12
[9] -> 13
[10] -> 15
[11] -> 14
[12] -> 10
[13] -> 11
[14] -> 9
[15] -> 8
Lesezeichen