#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
.