Как перевести отрицательное число в двоичную систему счисления?
Пожалуйста, объясните как перевести и есть ли какие-нибудь договоренности (мне сказали, что нужно обязательно добавлять ведущие нули так, чтобы число имело 8 цифр)?
Сразу говорю, я не в 11, можно простое объяснение, пожалуйста?
У отрицательного числа в двоичном представлении, в самом старшем разряде стоит единичка - куда уж проще...
Отрицательное число переводится в двоичную форму точно так-же как и положительное ( и указывается знак )
Другой вопрос как хранить отрицательное числов ячейках памяти
Можно записать двоичную строку с ведущим знаком
Можно использовать способы хранения с выделенным знаковым битом
У знаковых чисел в старшем бите (зависит от разрядов в числе) находится знак числа. 1 - минусовое число, 0 - плюсовое. Для того что бы перевети число в минусовое нужно его инвертировать и сложить с единицей. Пример:
В одном байте (то есть 8 разрядов) число 1 будет представлено как 00000001
для того что бы его представить как минус один то:
1) инвертируем биты 00000001 = 11111110
2)добавляем единицу 11111110 + 00000001 = 11111111
Получили -1
Проверка:
11111111 + 00000001 = 1(окажется в флаге переполнения) и 00000000.
То есть -1 + 1 = 0, ну если не считать флаг переполнения.
На примере показал как получить отрицательное число и если посмотреть проверку можно догадаться почему так решили сделать.
прямой код:
-5
1101
дополнительный код:
1шаг = 5 переводим в двоичное исчисление
0101
2шаг = инвертируем биты (1010) и добавляем единицу (1011)