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);
}
}
머나먼 땅으로 우리 동무가 이제 떠나간다네.
고향의 바람이 불어와 동무 뒤를 따르고
사랑스러운 도시가 푸른 이내 속에서 사라지네.
정든 집, 푸른 동산, 부드러운 눈길도...
어떤 값이 어떻게 변했는지를 비트 상태로 알고 싶다면a ^ b (
어떤 값이 어떻게 변했는지를 비트 상태로 알고 싶다면
a ^ b (xor)
하셔서 나온 값이 0 이면 변화가 없고 0 이 아니면 뭔가가 변한거겠죠.
어떤 비트가 변했는냐는 단순하게 루프를 돌면서 비트 마스크로 체크하시면 되겠겠습니다. 변화가 있는 (0->1, 1->0 이든 상관없이) 비트는 1로 변경될 것입니다.
1 에서 0, 0 에서 1 로 변한 것을 알고 싶으시다면 이전 값 기억하고 어째어째 하시면 될 듯 한데요....
그럼, 이만...
[code:1]uint a;uint b;a=somevalue;
머나먼 땅으로 우리 동무가 이제 떠나간다네.
고향의 바람이 불어와 동무 뒤를 따르고
사랑스러운 도시가 푸른 이내 속에서 사라지네.
정든 집, 푸른 동산, 부드러운 눈길도...
답변 감사드립니다...
답변 감사드립니다...
댓글 달기