Какие максимальные и минимальные значения можно представить с помощью 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 так что цифры могут быть сохранены!

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