У меня есть какое-то отрицательное значение, для которого мне нужно эквивалентное положительное значение. Я добавляю MAX + 1 к этому значению, где MAX - это максимальное значение, которое может быть представлено с таким количеством бит, мы можем решить эту проблему. Но это не помогло. Например, пожалуйста, ознакомьтесь со следующим кодом:конвертировать подписанное значение без знака в C
#include <stdio.h>
int main()
{
long long int i;
unsigned long long u;
u = 0xffffffff38034080;
u = 0xffffffffffffffff + u + 1;
printf("0x%llx", u);
}
Но эта программа возвращает такое же отрицательное число.
Выходной сигнал программы: 0xffffffff38034080
. Я хотел бы, чтобы это было 0x0000000038034080
'0xffffffff38034080' - положительное шестнадцатеричное число. Что вы ожидаете? – mch
Я хочу преобразовать 0xffffffff38034080 -> 0x0000000038034080 –
, вы просто спровоцируете переполнение, а затем вы находитесь на том же самом числе. Вы можете умножить на -1 или инвертировать его с помощью '~' и добавить 1, я думаю, или использовать битоперации типа '&' –