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

Å´µï   
   Á¶È¸ 4296   Ãßõ 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 1825/5686
2014-05   4977893   Á¤ÀºÁØ1
2015-12   1514041   ¹é¸Þ°¡
2015-06   4120   ¹Î»çÀå
06-12   1605   ÀÌ¿øÀçK
2019-12   3333   ¿¡½º¿ÀÅõ
2022-11   2304   ¹üÀÌ´Ô
2022-11   2795   ¹Ì¼ö¸Ç
2015-06   3673   ÂÄÀμº
2022-11   1679   Ã¥°¥·®
2016-07   4288   ¹Ú¼º¸¸
2022-11   1719   ±è³ðÁÖ
2016-07   5022   ÀÌ°ÇÈñ
2014-03   3868   ±¼´Ù¸®±³
2016-07   4169   Nicoffeine
2022-11   1643   NickWire
2012-01   7227   ¹Ì¼ö¸Ç
2016-08   3522   ¾Æ¸®¿¡³ªÀÌ
2017-08   3722   ¾Ë¼ö¾øÀ½
2021-04   2455   hyunÀÌ
2012-02   6213   MikroTikÀÌÁø
2021-04   2518   ¼­¿ïl½Â¿ë
2017-08   3800   Çϼ¿È£ÇÁ