c¾ð¾î¿¡¼ >> ¿¬»êÀº logical shift¿¬»êÀÌ ¾Æ´Ï¶ó arithmetic shift¶ó°í ÇÕ´Ï´Ù. >>,<<,&,| µî ºñÆ®¿¬»êÀÚ¿Í ½¬ÇÁÆ®¿¬»êÀÚµéÀ» ÀÌ¿ëÇÏ¿© logical shift¸¦ ±¸ÇöÇ϶ó´Â °úÁ¦Àä, <br />
ºñÁÖ¾ó ½ºÆ©µð¿À¿¡¼ C¾ð¾î·Î ±¸ÇöÇÑ ÄÚµå´Â Á¦´ë·Î µ¿ÀÛÇϴµ¥, ¸®´ª½º ȯ°æ¿¡¼ °úÁ¦È®ÀÎÇÁ·Î±×·¥¿¡ µ¹·Áº¸¸é ¿¡·¯°¡ ÀÖ´Ù°í ³ª¿É´Ï´Ù.
Á¶±³´Ôµµ ÄÚµå´Â ¸Â´Â°Å °°´Ù°í Çϴµ¥ ¿¡·¯°¡ ÀÖ´Ù°í ³ª¿É´Ï´Ù..
¼±¹è´Ôµé ¹¹°¡ À߸ø됬´ÂÁö Çѹø È®ÀÎÇØÁֽøé Á¤¸» °¨»çÇÏ°Ú½À´Ï´Ù. ¤Ì¤Ì °úÁ¦´Â Áß¿äÇÏÁö ¾ÊÁö¸¸ ¿À±â°¡ »ý°Ü¼ ³¡ÀåÀ» ºÁ¾ß°Ú³×¿ä..
int logicalShift(int x, int n) { //ÁÖ¾îÁø x¸¦ n ºñÆ®¸¸Å logical shift ¿¬»ê!
int temp,y; //x¸¦ >> ¿¬»ê½Ã MSB°¡ 1ÀÎ °æ¿ì(x°¡ À½¼öÀ϶§) Ãß°¡»ý¼ºµÇ´Â MSB°¡ 1ÀÌ µË´Ï´Ù. logical shift
//¿¡¼´Â MSB°¡ 1ÀÎ °æ¿ì¿¡µµ >>¿¬»ê½Ã Ãß°¡ »ý¼ºµÇ´ÂMSB°¡ 0ÀÌ µÇ±â ¶§¹®¿¡ ¸Ç óÀ½¿¡ MSB
//¸¦ ¾ø¾ÖÁÖ´Â ÀÛ¾÷À» ÇÒ °ÍÀÔ´Ï´Ù. ±×·±µ¥ óÀ½¿¡ x¿¡ >>1À» ÇØ ÁÖ¾ú±â ¶§¹®¿¡ ¸¶Áö¸·¿¡ ´Ù½Ãx <<1<br />
//¿¬»êÀ» ÇØÁÖ¾î¾ß¸¸ ÇÕ´Ï´Ù. ±× ¶§ ¼Õ½ÇµÇ´Â °ªÀÌ »ý±æ ¼ö°¡ Àֱ⠶§¹®¿¡ ¹Ì¸® temp¿¡ ÀúÀåÇØ ÁÝ´Ï´Ù.
//y´Â Ãß°¡»ý¼ºµÇ´Â MSB¿Í &¿¬»êÀ» ÇÏ¿© Ãß°¡»ý¼ºµÈ MSB¸¦ ¾ø¾ÖÁÖ´Â ¿ªÇÒÀ» ÇÒ °ÍÀ̱⠶§¹®¿¡
//0x7FFFFFFF ·Î ÃʱâÈÇÕ´Ï´Ù.
temp = x; //temp¿¡ x¸¦ º¹»çÇÕ´Ï´Ù.
temp = temp >> n; //temp¸¦ x°¡ À̵¿ÇÒ ¸¸ÅÀÇ Å©±âÀÎ nºñÆ®¸¸Å >>¿¬»êÇÕ´Ï´Ù.
temp = temp & 0x1; //¸¶Áö¸·¿¡ ¼Õ½ÇµÇ´Â ºñÆ®´Â ¸Ç ¿À¸¥ÂÊÀÇ ÇѺñÆ®À̱⠶§¹®¿¡ ÇÊ¿äÇÑ ºÎºÐ¸¸ 1°ú &¿¬»êÀ» ÇÏ¿©
//ÃÖÁ¾ÀûÀ¸·Î temp¿¡ ÀúÀåÇÕ´Ï´Ù.
x = x >> 1; //º» °è»êÀ¸·Î µé¾î°©´Ï´Ù. x ¸¦ 1¸¸Å >> ¿¬»êÇØÁÝ´Ï´Ù.(¿¬»ê½Ã »ý¼ºµÉ MSB¸¦ ¾ø¾Ö±â À§ÇØ)
y = 0x7FFFFFFF; //y¿¡ 0x7FFFFFFF ¸¦ ³Ö¾îÁÝ´Ï´Ù.
x = x & y; //x&y¸¦ ÇØÁÖ°í °á°ú°ªÀ» x¿¡ ÀúÀåÇÕ´Ï´Ù. À̷νá xÀÇ MSB´Â 0ÀÌ µÇ¾ú½À´Ï´Ù.
x = x >> n; //¹®Á¦ÀÇ ÇÙ½ÉÀÎ x¸¦ n¸¸Å shiftÇØÁÝ´Ï´Ù. À§ÁÙÀÇ ÄÚµåµé ´öºÐ¿¡ logical shiftó·³ ÀÛµ¿ÇÕ´Ï´Ù.
x = x << 1; //óÀ½¿¡ x¸¦ 1¸¸Å >>¿¬»ê ÇØÁÖ¾ú±â¶§¹®¿¡ ´Ù½Ã 1¸¸Å << ¿¬»êÀ» ÇÕ´Ï´Ù. À̶§ ¼Õ½ÇµÇ´Â ºñÆ®°¡<br />
x = x + temp; //¹ß»ýÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ óÀ½¿¡ x¸¦ >>1 ¿¬»ê ½ÃÅ°±â Àü¿¡ ÀÌ¹Ì temp¿¡ ÀúÀåÇصξú±â
//¶§¹®¿¡ temp¸¦ ´õÇØÁֱ⸸ ÇÏ¸é ¿ø·¡ÀÇ x°¡ n¸¸Å logical shift¸¦ ÇÑ ¸ð¾çÀÌ ¿Ï¼ºµÇ¾ú½À´Ï´Ù.
}
¼±¹è´Ôµé Ȥ½Ã ¿¡·¯ ÀÖ´ÂÁö Çѹø ºÁÁÖ½Ã¸é °¨»çÇÏ°Ú½À´Ï´Ù..¹ã»õµµ·Ï ã¾ÆºÃ´Âµ¥ ÀÌ ÂªÀº Äڵ忡 ¹«½¼ ¿¡·¯°¡ ÀÖ´ÂÁö ¸ð¸£°Ú½À´Ï´Ù. ¤Ì¤Ì | |
|