±×·¹ÀÌ(Gray) ºÎÈ£¸¦ Á¤¼ö·Î º¯È¯ÇÑ´Ù


ÇÔ¼ö¸í
gray2num  ±×·¹ÀÌ ºÎÈ£¸¦ Á¤¼ö·Î º¯È¯ÇÑ´Ù
Çü½Ä
unsigned gray2num(unsigned gray);
Àμö
gray  ±×·¹ÀÌ ºÎÈ£
ÇÔ¼öÄ¡
±×·¹ÀÌ ºÎÈ£¿¡ ´ëÀÀÇÏ´Â Á¤¼ö
ÁÖÀÇ »çÇ×

¿ë·Ê(gray2num-test.c )
gray2num(0x7);

ÇÁ·Î±×·¥(gray2num.c )
unsigned gray2num(unsigned gray)
{
    unsigned mask;
    int      flag;
    
    flag = 0;
    for (mask = 1 << (sizeof(unsigned) - 1); mask ! = 0; mask >>= 1) {
        if (flag) {
            if (gray & mask) flag = 0;
            gray ^= mask;
        } else 
            if (gray & mask) flag = 1;
    }
    return gray;
}
¼³¸í
±×·¹ÀÌ(Gray) ºÎÈ£´Â, ¿¹¸¦ µé¾î 0~7 »óŸ¦ Â÷·ÊÂ÷·Ê
¡¡¡¡¡¡000, 001, 011, 010, 110, 111, 101, 100
±×¸®°í Ç¥ÇöÇÑ´Ù. Áï, ±Ù󳢸®ÀÇ Â÷ÀÌ´Â 1 ºñÆ® »ÓÀÌ´Ù.

°ü·Ã ÇÔ¼ö
Á¤¼ö¸¦ ±×·¹ÀÌ ºÎÈ£·Î º¯È¯ÇÑ´Ù