Search code examples
c#.neterror-checkinggray-code

Gray code in .NET


Is there a built in Gray code datatype anywhere in the .NET framework? Or conversion utility between Gray and binary? I could do it myself, but if the wheel has already been invented...


Solution

  • Use this trick.

    /*
            The purpose of this function is to convert an unsigned
            binary number to reflected binary Gray code.
    */
    unsigned short binaryToGray(unsigned short num)
    {
            return (num>>1) ^ num;
    }
    

    A tricky Trick: for up to 2^n bits, you can convert Gray to binary by performing (2^n) - 1 binary-to Gray conversions. All you need is the function above and a 'for' loop.

    /*
            The purpose of this function is to convert a reflected binary
            Gray code number to a binary number.
    */
    unsigned short grayToBinary(unsigned short num)
    {
            unsigned short temp = num ^ (num>>8);
            temp ^= (temp>>4);
            temp ^= (temp>>2);
            temp ^= (temp>>1);
           return temp;
    }