원격에서 32비트를 보냅니다.
즉, 01011100 01001001 00011011 11001111
이런식으로 보내는데요.
맨 앞(01011100)부분의 3번째 비트(0)가 0인지 1인지 확인하고 싶습니다. 어떻게 하면 되나요?
01011100 01001001 00011011 11001111
00100000 00000000 00000000 00000000
을 만들어서 AND연산하면
해당 비트가 1일 경우 non-zero
해당 비트가 0일 경우 zero
이렇게 나올 듯.
그것을 수식으로하면,
00000000 00000000 00000000 00000001의 값을, 알고자 하는 n번째까지 이동시킨후, 해당 값이 0 인지 1인지만 보면 되는거 같네요.
1을 (n-1)만큼 이동하고, 원래 있던 32비트 와 and 연산하고, 이것이 1:0 인지 보면 되겠네요. 1<<(n-1) & (32비트) 이게 0이면 0이고, 이게 1이면 1이고.
맞나요? -.-;; 비트연산을 잘 사용안하다가 할려니 좀 헷갈리네요.
----------------------------------------------- 어머니, 그 이름만으로도 우리는 풍요로와 집니다.
효도합시다...... -----------------------------------------------
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
해당 비트만 1로 만들고 나머진 0으로해서 마스킹하면 되지 않을까요?
01011100 01001001 00011011 11001111
00100000 00000000 00000000 00000000
을 만들어서 AND연산하면
해당 비트가 1일 경우 non-zero
해당 비트가 0일 경우 zero
이렇게 나올 듯.
아~~ 그렇군요.
그것을 수식으로하면,
00000000 00000000 00000000 00000001의 값을, 알고자 하는 n번째까지 이동시킨후,
해당 값이 0 인지 1인지만 보면 되는거 같네요.
1을 (n-1)만큼 이동하고,
원래 있던 32비트 와 and 연산하고,
이것이 1:0 인지 보면 되겠네요.
1<<(n-1) & (32비트) 이게 0이면 0이고, 이게 1이면 1이고.
맞나요? -.-;; 비트연산을 잘 사용안하다가 할려니 좀 헷갈리네요.
-----------------------------------------------
어머니,
그 이름만으로도 우리는 풍요로와 집니다.
효도합시다......
-----------------------------------------------
댓글 달기