5-2-¹Ù.ȸÀü ¿¬»ê

ȸÀü(Rotate) ¿¬»êÀº ½¬ÇÁÆ® ¿¬»ê°ú À¯»çÇÑ ºñÆ® Á¶ÀÛ ¸í·ÉÀÌ´Ù. ½¬ÇÁÆ®´Â ºñÆ®¸¦ ¼±ÇüÀ¸·Î À̵¿½Ã۴µ¥ ºñÇØ ȸÀü ¿¬»êÀº ¿øÇüÀ¸·Î À̵¿½ÃŲ´Ù. ºñÆ® À̵¿¿¡ ÀÇÇØ ¹Ð·Á³ª´Â ºñÆ®´Â ¹ö·ÁÁöÁö ¾Ê°í ¹Ý´ëÂÊÀ¸·Î ´Ù½Ã À̵¿µÈ´Ù´Â °ÍÀÌ Æ¯Â¡ÀÌ´Ù. ȸÀü ¿¬»êÀº ½¬ÇÁÆ® ¿¬»ê¿¡ ºñÇØ ¸¹ÀÌ »ç¿ëµÇÁö ¾Ê±â ¶§¹®¿¡ ¿¬»êÀÚ ÇüÅ·δ Á¦°øµÇÁö ¾ÊÀ¸¸ç _rotl, _rotr ÇÔ¼ö·Î Á¦°øµÈ´Ù. C ¼öÁØ¿¡¼­´Â »ç¿ëÇÒ ÀÏÀÌ ±×¸® ¸¹Áö ¾Ê´Ù. °ú°Å µµÆ® ÇÁ¸°Åͳª À×Å©Á¬ ÇÁ¸°ÅÍÀÇ °æ¿ì Çì´õ°¡ ¼öÁ÷À¸·Î ¹è¿­µÇ¾î ÀÖÀ¸¹Ç·Î ÇÑ ºñÆ®¾¿ ÃßÃâÇÏ¿© ÇÑ ÁÙÀ» ¸¸µé¾ú´Âµ¥ ÀÌ·² ¶§ ȸÀü ¿¬»êÀÌ »ç¿ëµÇ¾ú´Ù. ±âº» µ¿ÀÛÀ» ±×¸²À¸·Î ±×·Á º¸¸é ´ÙÀ½°ú °°´Ù.

½¬ÇÁÆ® ¿¬»ê°ú °³³äÀûÀ¸·Î Å©°Ô Ʋ¸®Áö ¾Ê´Ù. ´ÙÀ½ ÄÚµå´Â 32ºñÆ®ÀÇ Á¤¼ö¸¦ ¿ÞÂÊ ¹æÇâÀ¸·Î 4ºñÆ® ȸÀüÇÑ °á°ú¸¦ Ãâ·ÂÇÑ´Ù.

 

unsigned i=0x12345678;

printf("%x\n",_rotl(i,4));

 

16Áø¼ö 0x12345678À» ¿ÞÂÊÀ¸·Î 4ºñÆ® ȸÀü½ÃŰ¸é °¢ ºñÆ®´Â 4ºñÆ® ¿ÞÂÊÀ¸·Î À̵¿Çϸç Á¦ÀÏ ¿ÞÂÊÀÇ 4ºñÆ®´Â ÇѹÙÄû¸¦ µ¹¾Æ¼­ ¿À¸¥ÂÊ¿¡ ³ªÅ¸³­´Ù. Ãâ·Â °á°ú´Â 23456781ÀÌ µÉ °ÍÀÌ´Ù. ¿À¸¥ÂÊÀ¸·Î 4ºñÆ® ȸÀü½Ã۸é 81234567ÀÌ µÉ °ÍÀÌ°í ´ç¿¬ÇÑ ¾ê±â°ÚÁö¸¸ ¾î´À ¹æÇâÀ¸·Î³ª 32ºñÆ® ȸÀü½ÃŰ¸é ¿ø·¡°ªÀÌ µÉ °ÍÀÌ´Ù.

ȸÀü ¿¬»ê°ú ½¬ÇÁÆ® ¿¬»êÀ» ÇÔ²² »ç¿ëÇÏ¸é ºñÆ®¸¦ ¾ÆÁÖ ¼¶¼¼ÇÏ°Ô Á¦¾îÇÒ ¼ö ÀÖ´Ù. ºñÆ®¸Ê À̹ÌÁö¸¦ ȸÀü½ÃŲ´Ù°Å³ª º¯ÇüÇÒ ¶§ °¢ Á¡À» ±¸¼ºÇÏ´Â ºñÆ®µéÀ» ÀÚÀ¯·Ó°Ô Á¶ÀÛÇÒ ¼ö ÀÖ´Ù. µÎ ¿¬»êÀº CPU°¡ ±â°è Â÷¿ø¿¡¼­ Á÷Á¢ Áö¿øÇÏ´Â Àú¼öÁØ ¿¬»êÀ̹ǷΠ¼Óµµ°¡ ¾ÆÁÖ ºü¸£´Ù.

ȸÀü ¿¬»êÀÇ Æ¯Â¡Àº ¿ø·¡ °ªÀ¸·Î º¹±¸°¡ °¡´ÉÇÏ´Ù´Â Á¡ÀÌ´Ù. ¿ÞÂÊÀ¸·Î ÇÑÄ­ µ¹·È´Ù°¡ ¿À¸¥ÂÊÀ¸·Î ´Ù½Ã ÇÑÄ­ µ¹¸®¸é Á¦ÀÚ¸®´Ù. ±×·¡¼­ XOR ¿¬»ê°ú ÇÔ²² ¾Ïȣȭ¸¦ À§ÇØ ÀÚÁÖ »ç¿ëµÈ´Ù. ½¬ÇÁÆ®³ª &, | ¿¬»êÀº ¿ø·¡°ªÀ» ÆÄ±«½ÃŰÁö¸¸ ȸÀü°ú XORÀº ¿ø·¡°ªÀ» º¸Á¸Çϸ鼭 °ªÀ» º¯°æ½ÃŲ´Ù. ±×·¡¼­ µ¹¸®°í ¹ÝÀü½ÃÄÑ ³õ´Â ¹æ¹ýÀ¸·Î °£´ÜÇÑ ¾Ïȣȭ¿¡ ÀÀ¿ëµÇ±âµµ ÇÑ´Ù. ÃÖÃÊ È¸ÀüÇÑ ¹Ý´ë ¹æÇâÀ¸·Î ´Ù½Ã ȸÀü½ÃŰ¸é ¿ø·¡°ªÀ» ±¸ÇÒ ¼ö ÀÖÀ¸¸ç ±×·¡¼­ ¿ø·¡ °ªÀ» º¹±¸ÇÒ ¼ö ÀÖ¾î¾ß ÇÏ´Â ¾Ïȣȭ¿¡ ÀûÇÕÇÏ´Ù.

´ÙÀ½ ¿¹Á¦´Â Áö±Ý±îÁö ¹è¿î ¿©·¯ °¡Áö ¿¬»êÀÚ¸¦ °ñ°í·ç »ç¿ëÇÏ¿© 10Áø¼ö¸¦ 16Áø¼ö·Î ¹Ù²ã Ãâ·ÂÇÑ´Ù. ¹°·Ð printfÀÇ %X ¼­½ÄÀ» »ç¿ëÇϸé ÈξÀ ´õ °£´ÜÇÏ°Ô 16Áø Ãâ·ÂÀ» ÇÒ ¼ö ÀÖÁö¸¸ ¿¬»êÀÚ ¿¬½ÀÀ» À§ÇØ printfÀÇ µµ¿ò¾øÀÌ Á÷Á¢ 16Áø¼ö·Î ¹Ù²ã º¸´Â °ÍÀÌ´Ù. ÀԷ¹ÞÀº Á¤¼ö¸¦ 16Áø¼ö ÇüÅ·ΠÃâ·ÂÇϴµ¥ »óÇÏÀ§ ´Ïºí(4ºñÆ®)¿¡ ´ëÇØ ´ëÀÀµÇ´Â ¹®ÀÚ¸¦ ã¾Æ Ãâ·ÂÇØ¾ß ÇÑ´Ù.

 

¿¹ Á¦ : Dec2Hex

#include <Turboc.h>

 

void main()

{

     int input;

     int low,hi;

 

     for (;;) {

          printf("0~255»çÀÌÀÇ ¼ö¸¦ ÀÔ·ÂÇϽÿÀ(³¡³¾ ¶§ -1) : ");

          scanf("%d",&input);

          if (input == -1) {

              break;

          }

 

          hi=input >> 4;

          low=input & 0xf;

          printf("ÀÔ·ÂÇÑ ¼öÀÇ 16Áø Ç¥±â = %c%c\n",

              hi+'0'+(hi>9)*7,low+'0'+(low>9)*7);

     }

}

 

½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù. ÀÔ·ÂÇÑ 10Áø¼ö¸¦ 16Áø Ç¥±â¹ýÀ¸·Î ¹Ù²ã Ãâ·ÂÇØ ÁØ´Ù.

 

0~255»çÀÌÀÇ ¼ö¸¦ ÀÔ·ÂÇϽÿÀ(³¡³¾ ¶§ -1) : 129

ÀÔ·ÂÇÑ ¼öÀÇ 16Áø Ç¥±â = 81

0~255»çÀÌÀÇ ¼ö¸¦ ÀÔ·ÂÇϽÿÀ(³¡³¾ ¶§ -1) : 200

ÀÔ·ÂÇÑ ¼öÀÇ 16Áø Ç¥±â = C8

 

0~255»çÀÌÀÇ 10Áø¼ö´Â 8ºñÆ® Å©±â¸¦ °¡Áö¸ç »óÇÏÀ§ 4ºñÆ®°¡ 16Áø¼ö ÇÑ ÀÚ¸®°¡ µÇ¾î µÎ ÀÚ¸®ÀÇ 16Áø¼ö·Î Ç¥±âÇÒ ¼ö ÀÖ´Ù. »óÇÏÀ§ ´ÏºíÀ» hi, low º¯¼ö¿¡ ºÐ¸®Çϱâ À§ÇØ >> ¿¬»êÀÚ¿Í & ¿¬»êÀÚ¸¦ »ç¿ëÇß´Ù. »óÀ§¿¡ ÀÖ´Â 4ºñÆ®°ªÀ» ÃßÃâÇÏ·Á¸é >> ¿¬»êÀÚ·Î 4ȸ ½¬ÇÁÆ®ÇÏ¸é µÇ°í ÇÏÀ§ 4ºñÆ®¸¸À» ³²±â·Á¸é & ¿¬»êÀÚ·Î »óÀ§ 4ºñÆ®¸¦ ¸¶½ºÅ© ¿ÀÇÁ½ÃŰ¸é µÈ´Ù.

ÀÌ·¸°Ô ±¸ÇÑ °¢ ÀÚ¸®°ªÀ» 16Áø ¹®ÀÚ·Î ¹Ù²Ù·Á¸é ÀÏ´Ü '0'À» ´õÇϰí 9º¸´Ù ´õ Å« °ªÀÏ °æ¿ì 7À» ´õÇÑ´Ù. ÀÌ ½Ä¿¡ ´ëÇØ¼­´Â ¾Õ¼­ ÀÌ¹Ì ¼³¸íÇÑ ¹Ù°¡ Àִµ¥ °ü°è ¿¬»ê¹®ÀÌ ÂüÀÏ ¶§ 1À» ¸®ÅÏÇÑ´Ù´Â Á¡À» ÀÌ¿ëÇÏ¿© ÇÑ ¹®ÀåÀ¸·Î ´ëÀÀµÇ´Â ¹®ÀÚ¸¦ ±¸ÇÒ ¼ö ÀÖ´Ù.