두 세트의 16 진수를 변경 한 다음 새로운 부호없는 char에 저장하는 코드가 있습니다. 코드는 다음과 같습니다 :비트 마스킹 XOR 코드 로직
unsigned char OldSw = 0x1D;
unsigned char NewSw = 0xF0;
unsgined char ChangedSw;
ChangedSw = (OldSw^~NewSw) & ~OldSw;
그래서 내가 알고있는 것은 :
0x1D = 0001 1101
의 0xF0 = 1111 0000
changedSw 라인이 무엇을하고 있는지에 임 혼란. 나는 그것이 0x02 출력을 줄 것이라는 것을 안다. 그러나 나는 그것을하는 방법을 이해할 수 없다.
종이에 작업을 하나씩 수행하십시오. 먼저 'NewSw'의 반전을 수행 한 다음 XOR을 수행 한 다음 'OldSw'의 반전을 수행하고 마지막으로 AND를 수행하십시오. 그렇다면 정확히 무슨 일이 일어나는 지 알게 될 것입니다. –
그래서 반전 된 NewSw는 0000 1111이 될까요? 그런 다음 XOR은 0x0D로 가져옵니다. 그럼 나는 반전 된 oldSw와 그걸 썼을 까? – user081608
예, 그게 무슨 일 이죠. –