bit masking을 할 때
보통의 경우는 아래와 같이 처리한다.
<방법론 1>
비트 on시킬 때
mask |= bit;
비트 off 시킬 때
mask &= ~bit
<방법론2>
mask ^= bit;
^ 라는 xor와 위 방법이 약간은 다른데 예를 들어서 설명하면
mask = 0000 0001 이고
설정할 값(A)이 0000 1110 이면
설정후에 0000 1111이 된다.
이 상태에서 A를 OFF 시키면
원래의 상태 0000 0001이 되도록 해야 한다.
이럴 경우 <방법론1>과 <방법론2>가 동일하게 처리되는데
A가 masking되지 않은 상태에서 unmasking시켰을 때 결과값이 달라진다.
<방법론1>은
A가 masking 되어 있던 안되어 있던 0000 00001이 되지만
<방법론2>는 A가 masking 되어 있지 않으면 0000 1111이 된다.
아래 URL을 참고하면
bit를 0으로 OFF 시킬때는 <방법론1>을 사용하고
bit를 on에서 OFF 또는 OFF에서 on으로 togging시킬때는
<방법론2>를 사용한다.
참고 : http://stackoverflow.com/questions/47981/how-do-you-set-clear-and-toggle-a-single-bit-in-c-c
'C언어' 카테고리의 다른 글
GDB 에서 한글 출력이 안될때 (0) | 2015.09.03 |
---|---|
clock_gettime (0) | 2015.04.16 |
c11 추가된 내용 (0) | 2015.03.20 |
tokyocabinet threading error (0) | 2015.03.18 |
thread deadlock debugging (0) | 2015.03.06 |