Как преобразовать десятичную дробь в 8-разрядный двоичный файл со знаком?

#binary #decimal

#двоичный #десятичная дробь

Вопрос:

Допустим, мне нужно преобразовать десятичную дробь -125 в 8-разрядное целое число со знаком, как мне это сделать?

Я изучаю компьютерные технологии и пытаюсь понять, как это понять. Я понимаю основы преобразования его в базу 2, но я не могу получить ответ.

Спасибо

Ответ №1:

8-разрядное целое число со знаком резервирует свой старший бит для знака. 1 указывает, что число отрицательное, 0 указывает, что число положительное. Давайте начнем с этого.

Число, которое вы пытаетесь преобразовать, равно -125 , поэтому первый бит должен быть 1 .

 1XXX XXXX
 

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

Второй бит нашего числа представляет 2^6 или 64 . Мы спрашиваем, сколько раз 64 можно войти 125 и найти, что ответ 1.953125 .

Мы не можем представить это число как a 1 или a 0 , но мы можем думать об этом так:

64 превращается в 125 один раз с остатком 0,953125 раз (или 61)

Давайте посчитаем один раз в нашем втором бите и используем остаток 61 в качестве нашего нового числа.

 11XX XXXX
 

Далее идет третий бит, который представляет 2^5 или 32 . Сколько раз можно 32 вводить 61 ? Ответ не является целым числом, но 1.90625 поэтому мы снова следуем логике предыдущего шага: используем 1 в качестве третьей цифры и 29 в качестве нашего нового числа.

 111X XXXX
 

Четвертый бит представляет 2^4 или 16 , который входит в 29 один раз с остатком 13 .

 1111 XXXX
 

Пятый бит представляет 2^3 или 8 , который входит в 13 один раз с остатком от 5 .

 1111 1XXX
 

Шестой бит представляет 2^2 или 4 , который входит в 5 один раз с остатком 1 .

 1111 11XX
 

Седьмой бит представляет 2^1 или 2 , который переходит в 1 ноль раз.

 1111 110X
 

Восьмой и последний бит представляет 2^0 или 1 , который входит в 1 один раз.

 1111 1101
 

Таким образом, наше 8-битное подписанное представление -125 является 11111101 .