двоичное противоположное число - PullRequest
0 голосов
/ 29 марта 2011

Я хочу получить противоположное число двоичного числа (означает х -> - (х) и - (х) -> х).

Каким будет алгоритм?Я думал об изменении всех битов («1» на «0» и «0» на «1») и добавить «1» к нему.Это нормально?

thnx

Ответы [ 2 ]

4 голосов
/ 29 марта 2011

Ваш алгоритм верен для двух чисел дополнения:

-x = ~x + 1

Для дополнения вы бы использовали:

-x = ~x

А для чисел со знаком:

-x = x ^ (1 << n)

Где n - это смещение бита знака в слове. Я использую здесь обозначение оператора C - ^ - побитовый оператор исключающего или, а << - сдвиг влево.

Для другого представления чисел вам понадобится другая операция.

3 голосов
/ 29 марта 2011

Это зависит от способа представления отрицательных чисел. Вам нужно два дополнительных представления? Вам нужно представление своего дополнения?

Для более подробной информации проверьте Википедия

...