Минимальное количество битов, необходимых для дополнения формы двоих

На моем промежуточном этапе возник вопрос:

Учитывая десятичные значения, какое минимальное число битов требуется для представления каждого числа в форме дополнения двух?

Значения были: -26, -1, 10, -15, -4.

Я не совсем правильно понял этот вопрос, и решения весьма сбивают с толку.

Единственная часть, которую я действительно понимаю, это нахождение диапазона, в котором находится значение. Например, -15 будет в диапазоне [-2 ^ 5, 2 ^ 5), а -4 будет в диапазоне [-2 ^ 2, 2 ^ 2). Какие шаги необходимы здесь, чтобы найти, сколько битов было необходимо?

Я пытался найти какой-то шаблон для его решения, но он работал только для первых двух случаев. Вот моя попытка:

  1. Сначала я нашел диапазон. -2 ^ 6 < -26 < 2 ^ 6

  2. Затем я нашел значение для 2 ^ 6 = 32.

  3. Затем я нашел разницу между «ближайшей» границей и значением.

-26 — (-32) = 6

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

Заранее спасибо!

3

Решение

Во-первых, у вас нет 2. 32 = 25.

Во всяком случае, я следовал за вами через первые два шага. Ваш последний шаг не имеет смысла.

  1. Найдите диапазон степеней двух, заключающий число в скобки. Вы хотите диапазон степеней двух формы [-2N, 2N — 1]. Так, для -26, это было бы -25 ≤ -26 ≤ 25 — 1. Это соответствует -32 ≤ -26 ≤ 31.
  2. Число битов для представления дополнения 2s будет тогда просто N плюс 1. «плюс 1» учитывает знаковый бит. Для -26 это 5 + 1 = 6.

Итак, для каждого из чисел, которые вы дали: -26, -1, 10, -15, -4.

  • -25 ≤ -26 ≤ 25 — 1 становится -32 ≤ -26 ≤ 31, что дает 5 + 1 = 6.
  • -20 ≤ -1 ≤ 20 — 1 становится -1 ≤ -1 ≤ 0, что дает 0 + 1 = 1.
  • -24 ≤ 10 ≤ 24 — 1 становится -16 ≤ 10 ≤ 15, что дает 4 + 1 = 5.
  • -24 ≤ -15 ≤ 24 — 1 становится -16 ≤ -15 ≤ 15, что дает 4 + 1 = 5.
  • -22 ≤ -4 ≤ 22 — 1 становится -4 ≤ -4 ≤ 3, что дает 2 + 1 = 3.

Понял?

-1 один хитрый …

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]