비트연산 질문
글쓴이: hwlee / 작성시간: 금, 2003/10/10 - 5:44오후
unsigned int a = 0xfedf
unsigned int b = 0xfcdf
--> 즉.. 이진수로 표현하면
a = 1111111011011111
b = 1111110011011111
여기서 보면 한 비트만.. 1 에서 0 으로 바뀌었는데..
몇번째 비트가 바뀌었는지 알려면 . 어떤 비트연산자를 사용해야 하나요?
또한 0 에서 1로 바뀌었는지 1에서 0으로 바뀌었는지 어떻게 알아나요?
Forums:


어떤 값이 어떻게 변했는지를 비트 상태로 알고 싶다면a ^ b (
어떤 값이 어떻게 변했는지를 비트 상태로 알고 싶다면
a ^ b (xor)
하셔서 나온 값이 0 이면 변화가 없고 0 이 아니면 뭔가가 변한거겠죠.
어떤 비트가 변했는냐는 단순하게 루프를 돌면서 비트 마스크로 체크하시면 되겠겠습니다. 변화가 있는 (0->1, 1->0 이든 상관없이) 비트는 1로 변경될 것입니다.
1 에서 0, 0 에서 1 로 변한 것을 알고 싶으시다면 이전 값 기억하고 어째어째 하시면 될 듯 한데요....
그럼, 이만...
[code:1]uint a;uint b;a=somevalue;
uint a; uint b; a=somevalue; b=somevalue; for(i=0;i<32;i++){ if(((a ^ b) & (1 << i))){ printf(" bit%d of a is differ from b(LSB0~MSB31)\r\n", i); printf(" current a state is %s\r\n", (a & (1 << i))?"TRUE":"FALSE"); BitProcess(i); } }머나먼 땅으로 우리 동무가 이제 떠나간다네.
고향의 바람이 불어와 동무 뒤를 따르고
사랑스러운 도시가 푸른 이내 속에서 사라지네.
정든 집, 푸른 동산, 부드러운 눈길도...
답변 감사드립니다...
답변 감사드립니다...