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


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

¿ë·Ê(num2gray-test.c )
num2gray(7);

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

Á¤¼ö¿¡ ´ëÀÀÇÏ´Â ±×·¹ÀÌ ºÎÈ£¸¦ ¿ä±¸ÇÏ·Á¸é , »óÀ§ÀÇ ºñÆ®·ÎºÎÅÍ ¼ø¼­¿¡ º¸°í °¡ 1ÀÇ ºñÆ®°¡ ³ªÅ¸³ª¸é(ÀÚ) ´ÙÀ½ÀÇ ºñÆ®¸¦ ¹ÝÀü½ÃŲ´Ù. ¹Ý ¹Ù²Û ºñÆ®°¡ ¶Ç 1À̶ó¸é, ±× ´ÙÀ½ÀÇ ºñÆ®´Â ¹ÝÀüÇÏÁö ¾Ê´Â´Ù.

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