(a&0x01)=? 0:1 a의 1번째 비트자리수가 0인지 1인지 알려면 저런식으로 쓰는데 그럼 8번째자리나 4번째 자리수가 0인지 1인지 알고싶을 때는 어떻게 쓰나요? 그리고 a의 1번째 비트만 바꿀 수 있는 연산이 있나요? 1001 일 때 1000으로 만들어줄거나 1000일때 1001로 바꿔주는 법이요 숫자가아니라 a의 1번째 비트를 1로 바꾸고 0으로 바꾸는 법좀 알려주세요
비트 연산자에 대해 공부해보세요.
저는 이렇게 생각했습니다.
(a & (1 << 4)) == (1 << 4) (a & (1 << 8)) == (1 << 8) a & 0 a | 1
AND 0은 무조건 0이 되고, OR 1은 무조건 1이죠.
아차, 0으로 만드는 건 제가 실수했네요.
a & 0xfffffffe
0xfffffffe를 2진수로 풀어서 쓰면 32비트 중 마지막 1비트 빼고 다 1이며, 이걸 원래 값에 AND 연산을 하면 원래 1이었던 비트는 그대로 통과하지만 마지막 비트는 통과하지 못하죠.
그것보다는 기존 LSB가 0인지 1인지에 따라 변경을, 즉 bit flip을 하는 걸 질문하신 듯합니다.
텍스트 포맷에 대한 자세한 정보
<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]
답변
비트 연산자에 대해 공부해보세요.
저는 이렇게 생각했습니다.
(a & (1 << 4)) == (1 << 4) (a
AND 0은 무조건 0이 되고, OR 1은 무조건 1이죠.
아차, 0으로 만드는 건 제가 실수했네요. a &
아차, 0으로 만드는 건 제가 실수했네요.
a & 0xfffffffe
0xfffffffe를 2진수로 풀어서 쓰면 32비트 중 마지막 1비트 빼고 다 1이며, 이걸 원래 값에 AND 연산을 하면 원래 1이었던 비트는 그대로 통과하지만 마지막 비트는 통과하지 못하죠.
그것보다는 기존 LSB가 0인지 1인지에 따라
그것보다는 기존 LSB가 0인지 1인지에 따라 변경을, 즉 bit flip을 하는 걸 질문하신 듯합니다.
댓글 달기