Как преобразовать подписанный DWORD в Беззнаковый DWORD?
У меня есть один метод, который является дополнением к двум.
Но когда я это сделал, компилятор выдает ошибку, что побитовая операция недопустима для чисел со знаком (согласно 12-му правилу MISRA 2004).
Итак, как я могу преобразовать в без знака 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) должно быть преобразовано в 3, без дополнения в два?
Определение перехода от подписанного к неподписанному состоит в
модуль значения, так что результаты всегда соответствуют тому, что вы
получил бы, взяв необработанные биты на машине дополнения двух. Но ты
не хочу конвертировать -3
; Вы хотите преобразовать расстояние, которое
абсолютная величина разницы: abs( num1 - num2 )
,
long num3;
...
if (num3<0) num3=-num3;
Или в чем именно проблема?