при попытке найти абсолютное значение и я думал, что был простой способ просто инвертировать знак с '~' или чем-то.
float newValue = oldValue * -1;
или
float newValue = -(oldValue); //() aren't needed, I just use them out of habit
Чтобы инвертировать знак, поставьте перед ним минус.
Простое отрицание с помощью -
работает, но большинство ответов проигнорировали тот факт, что ОП пытается сделать абсолютное значение. Для этого правильным инструментом является abs()
для целых чисел и fabs()
для флотов. Код будет кристально чистым, и результат будет таким, каким вы ожидаете. (Правка: Обязательно прочитайте документацию и ошибки для этих инструментов. Как указывает Ник, отрицание самого отрицательного числа с помощью abs()
возвращает то же самое отрицательное число.)
Оператор унарного отрицания -(expr)
делает именно то, что Вам нужно.
int x = -7;
int y = 7;
x = -x; // x is now 7
y = -y; // y is now -7
Битовый оператор дополнения ~(expr)
, который Вы упомянули, с другой стороны, переворачивает все биты во входном сигнале.
Если это поможет, то одна из проблем, которую игнорируют многие реализации абсолютных значений в дикой природе, заключается в том, что при отрицании наибольшего отрицательного значения заданного целочисленного типа дополнения с фиксированным размером двоек переполнится.