C¾ð¾î ÇÁ·Î±×·¡¹Ö Áú¹® µå¸³´Ï´Ù.

Å´µï   
   Á¶È¸ 4360   Ãßõ 0    

 모 대학 2학년 컴퓨터공학부 재학중인 학부생입니다.

다름이 아니라 이번에 전공책 과제를 하던 중 도저히 제 상식으로 풀 수 없는 문제를 마주하여서 찾고 찾다 결국 제야의 고수들이 서식하시는 2cpu에서 여쭤봅니다.

 순수하게 문제에 쏟은 시간만 5시간이 넘는데, 도무지 길이 안보이네요.. 힌트라도 조금만 주시면 감사하겠습니다..ㅠㅠ


문제는 이러합니다.








2.61과 2.62 문제인데요, 얼핏 보면 '어라 너무 쉬운데?' 하실까봐 부연설명 드립니다. 이 문제는 비트, 논리와 산술연산에 대한 이해를 높이려고 출제된 문제입니다. 따라서 다음과 같은 제한사항이 존재합니다..ㅠㅠ







네. 보이시나요. 조건문, 루프, 함수호출 나눗셈 곱셈 등이 제한되어서 뭐 손도 못 대고있습니다... 그나마 삽질로 알아낸건 형 변환을 잘 써먹으면 될 것 같은데 그마저도.. 제 머리로는 끝마칠 수가 없네요.. 도움 부탁드립니다.



ªÀº±Û Àϼö·Ï ½ÅÁßÇÏ°Ô.
/* Get most significant byte from x */

int get_msb(int x) {

    /* Shift by w-8 */
   
    int shift_val = (sizeof(int)-1)<<3;

    /* Arithmetic shift */

    int xright = x >> shift_val;

  /* Zero all but LSB */
 
  return xright & 0xFF;

}

ºñÆ® ¿¬»êÀ̶ó°í ÇÕ´Ï´Ù.
Áï º¯¼öÀÇ °ªÀÌ µé¾î¿À¸é º¯¼öÀÇ °ªÀÌ ¾î¶»°Ô µÇ³ª È®ÀÎÇÏ°í ºñÆ® ¶óÀÌÆ®·Î ¸î¹ø° ÀÇ °ªÀÌ ÀÛÀºÁö Å«Áö ¹°¾î º¸°í °ªÀ» ¸®ÅÏ Çϴ°ÍÀÔ´Ï´Ù.

ºñÆ®¿¬»ê À̶ó°í Çѹø °Ë»öÇغ¸¼¼¿ä..
     
Å´µï 2017-09
³×.. ¸»¾¸ÇϽô °ÍÀÌ ¹«¾ùÀÎÁö´Â ¾Æ´Âµ¥.. ±¸ÇöÇÏ´Â°Ô ³Ê¹« ¾î·Á¿ö¼­ ¿©Â庻 °ÍÀÔ´Ï´Ù. ¾î·µç µµ¿ò °¨»çÇմϴ٤ФÐ
¿ÀÈ«½Ä 2017-09
ù¹ø° ¹®Á¦´Â ºñ±³¹® »ç¿ë ºÒ°¡ ¿É¼ÇÀε¥ ¸¶Áö¸· »çÁø¿¡´Â Çã¿ëÀ̳׿ä..
µû·Î ¾²Áö ¸»¶ó´Â ºñ±³¹® ¹ýÄ¢ÀÌ ±× Ç¥ÇöÀ» ¾²Áö ¸»¶ó´Â°ÍÀÌ¸é ¹®Á¦ ÀÚü´Â ±×³É ±ÍÂúÀº Á¶°ÇÀÌ ´Þ·ÁÀÖ´Â ¼öÁØÀÔ´Ï´Ù..
c°è¿­À̶ó¸é if(a)ÀÏ °æ¿ì a°¡ 0ÀÌ ¾Æ´Ï¸é TRUE·Î ¸¸µé¼ö ÀÖÀ¸´Ï Á¶°Ç ÀÚü¸¦ ±×³É ºñÆ® ¿¬»êÀ¸·Î Ç϶ó´Â ¹®Á¦·Î º¸ÀÔ´Ï´Ù..
int¸¦ ¸ðµÎ 0À¸·Î ä¿ì´Â°Ç unsigned int b = 0ÀÌ¸é µÇ°í..
int¸¦ ¸ðµÎ 1·Î ä¿ì´Â°Ç À§¿¡¼­ b-1ÇÏ¸é µÇ°í..
lsb³ª msb´Â ±×³É 1À̳ª -1À» ´ëÀÔÇÏ°í ½Ã½ºÅÛ¿¡ µû¶ó Àû´çÇÑ ºñÆ®¸¦ 0À¸·Î ¸¶½ºÅ© ½ÃÄÑ Àç È®ÀÎÇÏ¸é µÉ°Ì´Ï´Ù.,.
¿ìÃø ½ÃÇÁÆ®¸¦ ÃëÇÑ´Ù´Â ¹®Á¦ ÀÚü´Â ÀÌÇØ°¡ µÇÁö ¾Ê½À´Ï´Ù.. ¸®Æ²/ºò¿£µð¾ÈÀΰ¡.. ±×°Å¸é Æ÷ÀÎÅÍ È®ÀÎÇؼ­ msb³ª lsbÀÇ À§Ä¡ È®Àθ¸ ÇÏ¸é µÇ´Â°Í °°½À´Ï´Ù.
     
Å´µï 2017-09
³× Á¦°¡ ¼ø¼­¸¦ ÀÌ»óÇÏ°Ô Çسö¼­ Á¶±Ý ¿ÀÇØ°¡ ÀÖ¾ú±º¿ä¤Ì¤Ì 3 4¹ø »çÁøÀÌ ¸ÕÀú Á¶°ÇÀ¸·Î ºÙ°í ³ªÁß¿¡ 1 2¹ø »çÁøÀÌ ÀÖ´Â °Å¶ó¼­.. ¸»¾¸ÇÏ½Å°Ç ´Ù ¸ø »ç¿ëÇÏ´Âµí ½Í³×¿ä
ºñÆ® ¿¬»ê...
Á¦°¡ ¹«Áö Áñ±â´ø Á¾¸ñÀÌ³×¿ä ¤¾¤¾

and or xor not µîÀÇ °ÔÀÌÆ®µé¸¸À¸·Î ¸ðµç ¿¬»êÀº °¡´ÉÇϴϱî¿ä... ±Ùµ¥ ¹®Á¦¸¦ Àоú´Âµ¥ ¹» Ç϶ó´Â°ÇÁö Àß ¸ð¸£°Ú¾î¿ä ¤Ð¤Ð Á˼ÛÇÕ´Ï´Ù... Á» ½±°Ô Ç®¾î¼­ ¹®Á¦¸¦ Àû¾îÁֽøé...

c function À¸·Î ¸¸µé¾î µå¸®°Ú½À´Ï´Ù ¤»
     
Å´µï 2017-09
Å©Å© Àúµµ Àß ¸ð¸£°Ú¾î¿ä.. ¤»¤»¤»¤»¤»¤»¤»¤»
½±°Ô Ç®¾î¼­ ¾ê±âÇϸé À½..
2.61 ¹®Á¦´Â
a¹ø ¹®Á¦¿¡¼­, ¸¸¾à ÀÎDzÀÌ -1À̸é, Áï ÃÖ»óÀ§ ºÎÈ£ºñÆ®¸¦ Æ÷ÇÔÇÑ ºñÆ®°¡ ¸ðµÎ 1ÀÌ¸é ¸®ÅÏ°ªÀÌ 1ÀÌ ³ª¿À¸é µÇ°í ÀÎDzÀÌ ¾ç¼ö¶ó¼­ ÃÖ»óÀ§ ºÎÈ£ºñÆ®°¡ 0ÀÌ µÇ°Å³ª ³ª¸ÓÁö ºÎÈ£ºñÆ®°¡ 0ÀÌµÇ¸é ¸®ÅÏÀÌ 0ÀÌ µÇ´Â ÇÁ·Î±×·¥À» Â¥´Â °ÍÀÔ´Ï´Ù. Á¦°¡ ¼³¸ÒÀ» Àß ¸øÇؼ­¤Ð¤Ð ÀÌÇØÇϼ̳ª¿ä?

 c¿Í d¹ø ¹®Á¦´Â ¹ø¿ªÀÌ Á» º°·Î¶ó¼­ Àúµµ ÀÌÇØÇϴµ¥ ¾Ö¸Ô¾ú³×¿ä. d¹øÀº ÃÖ»óÀ§ ºÎÈ£ºñÆ®¸¦ Æ÷ÇÔÇÑ ¹ÙÀÌÆ®ÀÇ ¸ðµç ºñÆ®. Áï, »óÀ§ 8°³ÀÇ ºñÆ®¸¦ ¸»ÇÕ´Ï´Ù.
c¹øÀº ¹Ý´ë·Î »óÀ§ 8°³¸¦ Á¦¿ÜÇÑ ¸ðµç ºñÆ®¸¦ ¸»ÇÕ´Ï´ç. ÀÌÇØÇϴµ¥ µµ¿òÀÌ µÇ¼ÌÀ»Áö ¸ð¸£°Ú³×¿ä...¤Ì¤Ì

2.62¹®Á¦´Â ¸®Æ²¿£µð¾È ºò¿£µð¾È¿¡ µû¸¥ ¿¬»êÀÇ Â÷º°¼º¿¡ °ü·ÃÇؼ­ ³ª¿Â ¹®Á¦ÀΰͰ°Àºµ¥ Àúµµ ÀÌÇØ°¡ Àß ¾È°¡¼­ ¼ÕÀ» ¸ø´ë°íÀֳ׿ä.. 2.61ÀÌ¶óµµ µµ¿ò ÁÖ½Ã¸é °¨»çÇÏ°Ù½À´Ï´ç
int badd(int n1, int n2){
    int carry, sum;
    carry = (n1 & n2) << 1; // Find bits that are used for carry
    sum = n1 ^ n2; // Add each bit, discard carry.
    if (sum & carry) // If bits match, add current sum and carry.
        return badd(sum, carry);
    else
        return sum ^ carry; // Return the sum.
}

int bsub(int n1, int n2){
    // Add two's complement and return.
    return badd(n1, badd(~n2, 1));
}


** Ãâó
https://stackoverflow.com/questions/12538724/performing-arithmetic-operations-in-binary-using-only-bitwise-operators
Á» low level programming À̱º¿ä ÀÌ·±°É ¾Ë¾Æ¾ß »ç½Ç Àüü¸¦ ÀÌÇØÇϴµ¥ ¸¹ÀÌ µµ¿òÀÌ µÇÁö¿ä... ±Ùµ¥ ¾È¾²¸é ´Ù ±î¸Ô´Â ±×·±°Íµé...
¸¶ÀÌÅ©·ÎÄÚµå °°Àº °Í¿¡ Àû¿ëÇϸé ÁÁÀ» °Í °°Àº ·êµéÀ̳׿ä.
2.61.A return !(x ^ -1);
2.61.B return !x;
2.61.C return !((x & 0xff) ^ 0xff);
2.61.D return !get_msb(x);
2.62 return get_msb(x >> 8);
¿¹½Ã·Î »ç¿ëµÈ get_msg()¸¦ ÀÌ¿ëÇؼ­ ÇÔ¼öÈ£Ã⸸ ¾ø°ÔÇÏ¸é µÉ °Í °°½À´Ï´Ù.
     
Å´µï 2017-09
Çä °¨»çÇÕ´Ï´Ù.. °úÁ¦¸¦ ´ë½Å ÇØÁÖ½Ã´Ù´Ï Àú´Â ÈùÆ®¸¸ ¹Ù¶õ°Çµ¥.. ¼ÒÁßÈ÷ È°¿ëÇÏ°í ÀÌÇؾȰ¡´Â °Í ÀÖÀ¸¸é ¶Ç ´ñ±Û´Þ¾Æ¼­ ¿©ÂåºÁµµ µÉ±î¿ä
          
ÀÌ·±°Ç Çѹø º¸°í ÀÌ·¸°Ôµµ µÈ´Ù´Â °É ¾Ë¸é ´ÙÀ½¿£ ¾ó¸¶µçÁö ÀÀ¿ëÀÌ °¡´ÉÇϴϱî.. ½º½º·Î ÇØ°áÇÏ´Â °Í¿¡ Å« Àǹ̴ ¾øÀ» °Í °°¾Æ¿ä.
¿©±â¿¡ Áú¹®ÇÏ½Ã¸é ¿Ø¸¸ÇÑ°Ç ´Ù ÇØ°áµÇ´Â ³î¶ó¿î °æÇèÀ» ÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù~
     
Å´µï 2017-09
ÀÌÁ¦º¸´Ï ³Ê¹« °£´ÜÇÑ ¿¬»êÀ̳׿ä... ÀÌ°É ³Ê¹« ¿À·§µ¿¾È °í¹ÎÇÑ Á¦°¡ ¹Ùº¸°¡ µÈ ´À³¦¤Ð¤Ð ÇãÅ»Çϱº¿ä
          
ÁÁ~À» ¶§³×¿ä. ±×³ªÀú³ª 97³â»ýÀÌ ´ëÇлýÀ̶ó´Ï.. Á¦°¡ 94ÇйøÀε¥.. Ãæ°ÝÀûÀ̳׿ä..
·Î¶Ç¹øÈ£µµ ¹ßÇ¥µÇ°í ³ª¸é ¿Ö ³»°¡ ÀÌ°É ¸ø°ñ¶úÁö ±×·¯Áö¿ä ¤»


QnA
Á¦¸ñPage 2134/5696
2014-05   5029591   Á¤ÀºÁØ1
2015-12   1566156   ¹é¸Þ°¡
2016-02   4360   1mÀü
2016-02   4360   ÆíÇѼ¼»ó
2006-10   4360   À±È£¿ë
2007-06   4360   ±èÅÂÈÆ
2017-08   4360   ¾È±Ô¹Î
2019-07   4360   »Ñ¶ø
2006-08   4360   Á¤Å¼ö
2016-08   4360   ±èÇϼº
2012-07   4360   song05
2015-05   4360   ÀÌõdz
2018-05   4360   Win31
2014-05   4360   ±èÀ±¼ú
2018-05   4360   Çູã±â
2020-07   4360   bangCH
2017-08   4360   ½ÅÀº¿Ö
2014-05   4360   µÎ¸®¾È
2017-04   4360   ¾îÄg
2014-06   4360   ¼­¿ïI±èµ¿¼ö
2005-12   4360   ÃÖ¿ë¼®
2019-05   4360   ÅëÅë9