Подписанная величина и дополнение

Мне нужно знать, как решить эту проблему, пожалуйста

Представьте следующие десятичные числа в двоичном виде, используя 8-битную величину со знаком, одно дополнение и дополнение двух:

  1. 88
  2. -76

Мое решение:

 88 = 01011000 8 bit sm
      10100111 1s complement
      10101000 2s complement

-76 = Not sure about this one

2 ответа

В 8-битной величине со знаком MSB обозначает знак числа, будь то положительный или отрицательный.

88 = 01011000

     ^(MSB) this is signed bit,0 for positive.

В десятичном виде, чтобы получить -76, мы вычитаем 76 из числа комбинаций (256), что дает 256 - 76 = 180.

-76 = 10110100

      ^(MSB) this is signed bit, 1 for negative.

Для представления дополнения просто измените биты, т. Е. Измените 0 на 1 и 1 на 0.

Следовательно, 86(one's complement) = 10100111.

А также, -76(one's complement) = 01001011.

Кроме того, мы получаем дополнение к двум, добавляя 1 к двоичному представлению числа.

Следовательно, 86(two's complement) = 10101000.

А также, -76(two's complement) = 01001100.

Эта ссылка должна помочь вам в решении вашей проблемы - она ​​довольно короткая и понятная: http://www.cs.uwm.edu/classes/cs315/Bacon/Lecture/HTML/ch04s11.html

Краткое объяснение 8-битной величины со знаком:

Номер в нужном вам формате выглядит так:
1000 0110, что равно -6 в десятичном виде:
1 *** **** - означает, что число имеет знак (минус),
* 000 0110 - который содержит двоичное представление числа.

Когда у вас есть положительное число, вы просто конвертируете его в двоичную форму:
(D) 7 = 0000 0111 (D) 20 = 0001 0100

Если у вас отрицательное число (например, -7), ваш старший бит равен 1: 1...

и значение просто преобразуется в двоичную форму:
(D) 7 = 111 = 000 0111

Затем вы объединяете это:
(D) -7 = 1000 0111.

Обратите внимание, что в этом формате вы можете сохранять только числа в диапазоне от -127 до 127 - у вас осталось только 7 младших битов для значения, тогда как 8-й бит должен быть оставлен для знака.

1с дополнительный пример:

(D) -7 = 1000 0111 в 8-битной подписи. Когда вы добавляете число и оно дополняет 1, вы должны получить: 1111 1111
1000 0111 - ваш номер
0111 1000 + - дополнительный номер вашего номера
^^^^^^^^^
1111 1111

Формально вы можете сделать следующую операцию:
1111 1111
1000 0111 - - твой номер
^^^^^^^^^
... <- дополнительный номер вашего номера

2s дополняют:

Когда вы подсчитали 1с, просто добавьте к нему 1: 1000 0111 - ваш номер
0111 1000 - дополнительный номер вашего номера
0111 1001 - дополнительный номер вашего номера

Попробуйте сделать это самостоятельно и опубликуйте свой ответ - так вы узнаете гораздо больше.

Другие вопросы по тегам