Подписанная величина и дополнение
Мне нужно знать, как решить эту проблему, пожалуйста
Представьте следующие десятичные числа в двоичном виде, используя 8-битную величину со знаком, одно дополнение и дополнение двух:
- 88
- -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 - дополнительный номер вашего номера
Попробуйте сделать это самостоятельно и опубликуйте свой ответ - так вы узнаете гораздо больше.