Один из алгоритмов вычисления абсолютного значения числа: 23
mask = n >> 31
. 2 Для отрицательных чисел маска будет равна 111…111 (-1), а для положительных — 000…000 (0). 3mask + n
. 2x = x XOR mask
. 3 Для маски 111…111 (отрицательное число) это будет операция NOT, а для маски 000…000 (положительное число) — нет. 3x = x - mask
. 3Таким образом, для положительных чисел выполняется XOR с 0 и вычитание 0, и в результате получается то же число. 3 Для отрицательных чисел получается (NOT x) + 1, что при использовании двухдоменного представления равно -x. 3
Также для вычисления абсолютного значения числа можно использовать функцию abs(), которая принимает один аргумент и возвращает абсолютную величину переданного значения. 1