서명 된 DWORD를 Unsigned DWORD로 변환하는 방법?Dword와 서명이없는 Dword에 2의 보수가 없으면 서명 되었습니까?
나는 2의 보수를하는 한 가지 방법이 있습니다.
하지만 내가했을 때, 컴파일러는 부호있는 숫자에 대해 비트 연산이 허용되지 않는다는 오류를 제공합니다 (MISRA 규칙 2004 12 번째 규칙에 따라).
그렇다면 어떻게 서명되지 않은 Dword로 변환 할 수 있습니까?
long int num1,num2,
unsigned long int num3;
num1 = 293;
num2 = 296;
num3 = num1 - num2;
코드를 실행하면 num3이 some 0xue와 같은 0xFFFFFFE 일부로드됩니다.
하지만 실제로 원하는 값 3을 저장해야합니까?
그래서 나는 unsigned long int num3을 long int num3으로 만들었습니다.
그런 다음 num3 부호있는 값 (이 경우 -3)은 2의 보수를 수행하지 않고 3으로 변환해야합니까?
부호없는 비트로 먼저 캐스팅 한 다음 비트 연산을 적용하십시오. –