署名付き DWORD を署名なし DWORD に変換する方法は?
私は2の補数である1つの方法を持っています。
しかし、私が行ったとき、コンパイラはビット単位の演算が符号付き数値に対して許可されていないというエラーを出しています (MISRA ルール 2004 12 番目のルールに従って)。
では、どうすれば署名なしの Dword に変換できますか?
long int num1,num2,
unsigned long int num3;
num1 = 293;
num2 = 296;
num3 = num1 - num2;
コードを実行すると、num3 に次のような 0xFFFFFFE 値がロードされます。
しかし、実際には目的の値 3 を保存する必要がありますか?
そのため、unsigned long int num3 を long int num3 にしました。
次に、num3 符号付き値 (この場合は -3) は、2 の補数を使用せずに 3 に変換する必要がありますか?