tshm
1/31/2014 - 5:29 AM

graycode.c

int graycode(int in) {
        int out = in & 0xFFFF;
        for (int i=0; i<16; i++) {
                // if certain bit is 1 then rest of bits get flipped else no change.
                if (out & (0x8000 >> i)) {
                        out ^= (0xFFFF >> (i+1));
                }
        }
        return out;
}