Какие максимальные и минимальные значения можно представить с помощью 5-значного числа? в представлении дополнения 2
Какие максимальные и минимальные значения могут быть представлены с помощью 5-значного числа, предполагающего представление в виде дополнения 2?
найти минимальное и максимальное значение из 5-значных чисел, которые равны 00000, и я не уверен, что такое максимум. Затем преобразовать в два дополнения? Это звучит глупо, но это единственное, что я могу придумать...
Мой последний вопрос: какова минимальная длина регистра в процессоре, необходимая для хранения значений между –EA(base16) и 24(base16), при условии, что они хранятся в формате дополнения до 2?
Я не уверен, как решить эту проблему.
Любая помощь или объяснение будет очень признателен:)
2 ответа
Я хочу уточнить этот старый ответ.
Диапазон дополнения двух с N
цифры это −(2N − 1)
в +(2N - 1 - 1)
,
Это отличается от первой строки в топе проголосовавшего ответа.
Имея это в виду, когда N
равно 5:
максимальная
(25 - 1 - 1)
знак равно (24 - 1)
знак равно 16 - 1
знак равно 15
минимальный
−(25 − 1)
знак равно −(24 − 1)
знак равно −(16)
знак равно -16
Два дополнения
Диапазон дополнения двух с N
цифры это −(2N − 1 − 1)
в +(2N - 1)
,
Это происходит потому, что для получения дополнительного представления числа к вам:
- Оставьте это как есть, если число больше или равно нулю.
- Обратить все биты и добавить один, если число меньше нуля.
Таким образом, первый бит (MSB) будет знаковым битом и будет равен единице, когда число отрицательное. Если вы попытаетесь преобразовать отрицательное число и в итоге получите число, начинающееся с нуля (или если вы попытаетесь преобразовать положительное число и в конечном итоге получить число, начинающееся с единицы), вам нужно будет получить больше битов для хранения этого числа. должным образом.
Имея это в виду, когда N
равно 5:
максимальная
(25 - 1)
знак равно (24 - 1)
знак равно 16 - 1
знак равно 15
минимальный
−(25 − 1 − 1)
знак равно −(24 − 1)
знак равно −(16)
знак равно -16
Если вы добавите одно максимально возможное число (15)10 = 011112, вы получите 10000 2 = -16, и поэтому это максимально возможные минимальные значения.
Преобразование шестнадцатеричного числа в двоичное число за цифрой:
-EA
-EA16 = - (1110 1010)2
Если бы это число было только 8 бит
- Первый бит будет знаковым битом.
Чтобы получить дополнение двух, вы должны инвертировать все биты и добавить 1:
-EA16 = (0001 0101 +1)2 = 0001 01102
Делая это, вы понимаете, что вам нужен еще один бит для хранения вашего знака, потому что число, которое вы получили, кажется положительным! (отрицательные числа всегда начинаются с единицы в этом представлении, мы знаем, что это отрицательное число, но оно начинается с нуля).
Преобразовав полученное число в десятичное, мы получим 22, что положительно. Эта проблема произошла, потому что мы не добавили немного, чтобы представить знак.
С дополнительным знаком:
Если бы это было 9 бит
-EA16 = - (0 1110 1010)2 (1 0001 0101 +1)2 = 1000 01102
Таким образом, вам нужно 9 бит, чтобы сохранить это число.
24
2416 = (0010 0100)2
Для правильного хранения числа вам понадобится всего 7 бит (6 бит + знак бит).
Зарегистрировать общее количество бит
Вам понадобится 9-битный регистр, так как вы сможете хранить оба числа. (Вы должны получить размер наибольшего числа, иначе оно будет обрезано и неправильно представлено.)
9-битный регистр
Несмотря на то, что 9-битный регистр немного необычен, он может хранить числа в следующем диапазоне:
максимальная
(29 - 1)
знак равно (28 - 1)
знак равно 256 - 1
знак равно 255
=16 франков
минимальный
−(29 − 1 − 1)
знак равно −(28 − 1)
знак равно −(256)
знак равно -256
= -10016
Как мы можем видеть -EA > -100
а также 24 < FF
так что цифры могут быть сохранены!