Подтвердить что ты не робот

Как вы преобразовываете дробь в двоичный?

1/10(decimal) = 0.0001100110011... (binary)

Как мне это сделать? Должен ли я преобразовать в двоичный код, а затем разделить? Может ли кто-нибудь показать мне?

4b9b3361

Ответ 1

В университете я узнал это так:

  • Умножьте на два
  • принять десятичное число в виде цифры
  • возьмите дробь в качестве отправной точки для следующего шага
  • повторите, пока вы не перейдете к 0 или к периодическому номеру
  • прочитайте номер, начинающийся с вершины - первый результат - первая цифра после запятой

Пример:

0.1 * 2 = 0.2 -> 0
0.2 * 2 = 0.4 -> 0
0.4 * 2 = 0.8 -> 0
0.8 * 2 = 1.6 -> 1
0.6 * 2 = 1.2 -> 1
0.2 * 2 = 0.4 -> 0
0.4 * 2 = 0.8 -> 0
0.8 * 2 = 1.6 -> 1
0.6 * 2 = 1.2 -> 1
Result: 0.00011(0011) periodic.

Ответ 2

 1              1
-- (dec)  =   ---- (bin)
10            1010


       0.000110011...
      -------------
1010 | 1.0000000000
         1010
       ------
         01100
          1010
         -----
          0010000
             1010
            -----
             01100
              1010
             -----
              0010

Ответ 3

Это может быть несколько запутанным, но десятичные позиции в двоичном представлении будут представлять собой обратные силы двух (например, 1/2, 1/4, 1/8, 1/16, для первого, второго, третьего и четвертого десятичное место, соответственно), так же как и в десятичной, десятичные числа представляют собой обратные последовательные степени в десять.

Чтобы ответить на ваш вопрос, вам нужно будет выяснить, какие взаимные полномочия двух должны быть добавлены, чтобы добавить до 1/10. Например:

1/16 + 1/32 = 0,09375, что довольно близко к 1/10. Добавление 1/64 ставит нас, как и 1/128. Но, 1/256 приближает нас. Итак:

0.00011001 двоичный = 0.09765625 десятичный, что близко к тому, что вы просили.

Вы можете продолжать добавлять все больше цифр, поэтому ответ будет 0.00011001...

Ответ 4

Вот как можно думать о методе.

Каждый раз, когда вы умножаетесь на 2, вы меняете двоичное представление числа, оставшегося на 1 место. Вы переместили самую высокую цифру после точки на 1-е место, поэтому снимите эту цифру, и это первая (самая высокая, поэтому самая левая) цифра вашей фракции. Сделайте это снова, и у вас будет следующая цифра.

Преобразование базы целого числа путем деления и принятия остатка, поскольку следующая цифра сдвигает число вправо. Вот почему вы получаете цифры в обратном порядке, сначала самые низкие.

Это, очевидно, обобщается на любую базу, а не только на 2, как указано GoofyBall.

Еще одна вещь, о которой нужно подумать: если вы округлите до N цифр, остановитесь на N + 1 цифрах. Если цифра # N + 1 является одной, вам нужно округлить (так как цифры в двоичном формате могут быть только 0 или 1, обрезая следующую цифру, а 1 является такой же неточной, как и усечение 5 в десятичной).

Ответ 5

Понадобился время, чтобы понять ответ @Femaref (s), поэтому я подумал, что буду подробно разбираться.

Elboration

Вы хотите преобразовать десятичный 1/10, который равен 0.1 двоичному. Начните с 0.1 в качестве вашего ввода и выполните следующие действия:

  • Умножить ввод на 2 (много столбцов)
  • Взять десятичное значение из ответа (столбец ответа) в виде цифры (двоичный столбец)
  • Возьмите дробь (дробь фракции) в качестве ввода для следующего шага
  • Повторяйте шаги 1, 2 и 3, пока не дойдете до 0 или периодического числа. Начало периодического числа в этом случае показано в последнем столбце, поэтому мы можем остановиться там. Но я продолжал демонстрировать повторение для ясности.
  • Ответ - это числа, взятые из двоичного столбца, начинающегося с вершины.

В этом случае это:

0.00011(0011) Note: numbers within parenthesis will keep repeating (periodic)

+-------+-------+--------+---------+----------+--------+----------------------+
| input | mult  | answer | decimal | fraction | binary |                      |
+-------+-------+--------+---------+----------+--------+----------------------+
|   0.1 |  2    |    0.2 |    0    |     .2   |      0 |                      |
|   0.2 |  2    |    0.4 |    0    |     .4   |      0 |                      |
|   0.4 |  2    |    0.8 |    0    |     .8   |      0 |                      |
|   0.8 |  2    |    1.6 |    1    |     .6   |      1 |                      |
|   0.6 |  2    |    1.2 |    1    |     .2   |      1 |                      |
|   0.2 |  2    |    0.4 |    0    |     .4   |      0 |                      |
|   0.4 |  2    |    0.8 |    0    |     .8   |      0 |                      |
|   0.8 |  2    |    1.6 |    1    |     .6   |      1 |                      |
|   0.6 |  2    |    1.2 |    1    |     .2   |      1 | < Repeats after this |
|   0.2 |  2    |    0.4 |    0    |     .4   |      0 |                      |
|   0.4 |  2    |    0.8 |    0    |     .8   |      0 |                      |
|   0.8 |  2    |    1.6 |    1    |     .6   |      1 |                      |
|   0.6 |  2    |    1.2 |    1    |     .2   |      1 |                      |
+-------+-------+--------+---------+----------+--------+----------------------+