Преобразование десятичного числа в двоичное - PullRequest
3 голосов
/ 29 января 2010

Что такое двоичная форма -10? Как рассчитывается?

Ответы [ 4 ]

7 голосов
/ 29 января 2010

Для преобразования -10 (десятичного) в двоичный код:

Повторно делите абсолютное значение (| -10 | = 10) числа на 2, пока не получите 0 в частном:

(10 / 2 = 5 R 0)
(5  / 2 = 2 R 1)
(2  / 2 = 1 R 0)
(1  / 2 = 0 R 1) // zero is the value in the quotient so we stop dividing

Поместите остатки, чтобы получить двоичный эквивалент:

1010

Для 8-битной ячейки ответом является 0000 1010, 16-битной ячейкой 0000 0000 0000 1010 и т. Д.

Возьмите дополнение к другому путем инвертирования битов (мы будем считать, что 8-битная ячейка содержит окончательное значение):

0000 1010
1111 0101 // bits are inverted

Теперь возьмите 2 дополнения, добавив 1:

 1111 0101
+        1
----------
 1111 0110 // final answer

Что происходит с 4-битной ячейкой?

Дополнение будет:

1010
0101 // inverted bits

При взятии дополнения 2 получается:

 0101
+   1
 ----
 0110 // final answer for a 4-bit cell   

Поскольку число должно быть отрицательным, а результат не означает, что (число начинается с 0, когда оно должно начинаться с 1), возникнет условие переполнения.

4 голосов
/ 29 января 2010

Возьмите двоичную форму 10, инвертируйте все биты и добавьте один.

10       0000 1010
invert   1111 0101
add 1    1111 0110
1 голос
/ 29 января 2010

Ваш вопрос не имеет "правильного" ответа. Сначала вы должны определить представление, которое хотите использовать. Вы хотите использовать дополнение двух , дополнение единиц , знак-значение или что-то еще? Затем вы должны определить, сколько бит использовать.

Допустим, мы работаем с представлениями шириной 5 бит.

+10: 0 1 0 1 0

Давайте посмотрим на систему знаковых величин. В этой системе самый старший бит (бит 5) равен 1, если число отрицательное, и 0 в противном случае. Остальные биты представляют величину (абсолютное значение) числа.

Итак, мы получаем:

-10: 1 1 0 1 0 (sign-magnitude, 5 bits)

Давайте посмотрим на их дополнение сейчас. Здесь отрицательное число представляется просто изменением 1 s на 0 s и наоборот (отсюда и дополняют имена - вы дополняете число относительно длинной последовательности 1 s).

Итак, мы получаем:

-10: 1 0 1 0 1 (ones' complement, 5 bits)

Наконец, давайте посмотрим на систему двух дополнений. В этом мы берем число в его системе дополнения, а затем добавляем 1 к нему.

Итак, мы получаем:

-10: 1 0 1 0 1
             1
     ---------
     1 0 1 1 0 (two's complement, 5 bits)
     ---------

Таким образом, двоичное представление отрицательного числа зависит от системы, которую мы используем, и от количества доступных нам битов.

Кроме того, вы могли заметить положение апострофа в дополнении к и дополнении в два . Почему не является дополнением или twos ' дополнением? Тогда ответь от Кнута:

Число дополнения до двух дополняется относительно одной степени 2, а число дополнения до единицы дополняется относительно длинной последовательности 1 с. В самом деле, существует также «двойная нотация дополнения», которая имеет основание 3 и дополнение по отношению к (2 ... 22) 3

1 голос
/ 29 января 2010

Перейдите по этой ссылке. Вы можете найти двоичную форму отрицательного числа, скажем, -n, обнаружив two's complement из n.

...