Преобразование повторяющегося двоичного числа в десятичное

Как представить 0,1011111.... или 0,10(1) в виде дроби a/b? Где a и b — целые числа.

Я пробую этот метод

х = 0,10 (1) х = 10,(1) / 4

Теперь у = 10. (1)

2у = 101.(1)

откуда следует 2y - y = 91 у = 91

х = 91/4 Но a = 91 и b = 4 неверно.

Как мне это решить?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
333
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы должны заметить, что числа все еще в двоичном формате. Таким образом, в десятичном виде вы получаете, что целая часть y равна 2, а 2y равна 5, так что в разнице y=3.

Обратите внимание, что в двоичном 0.1(1)=1 так же, как и в десятичном 0.9(9)=1. Таким образом, альтернативным способом x является в точности бинарным 0.11, то есть 1/2+1/4=3/4.

Вы можете сделать это следующим образом:

х = (0,1011111)2

Представление вышеуказанного двоичного члена в десятичном виде дает нам:

х = 1/21 + 0/22 + 1/23 + 1/24 + ... )
х = 1/2 + 1/22*(1/21 + 1/22 + 1/23 + ...)

Если мы проигнорируем термин, выделенный жирным шрифтом в приведенном выше уравнении, термин в скобках станет Икс, поэтому мы можем сказать, что термин в скобках равен (х+1/22)

х = 1/2 + 1/2 2 * (х + 1/2 2)
х = 1/2 + х/4 + ​​1/16

Решите вышеприведенное уравнение

3x/4 = 9/16
х = 3/4

Незначительная ошибка: 1/8 должно быть 1/16. Таким образом, когда вы решите, вы получите x=3/4, что согласуется с ответом @LutzL.

Mark Dickinson 30.05.2019 20:39

Вот обобщение этой проблемы на частую ситуацию с повторяющимися паттернами.

Предположим, что x=0,001100110011..., где шаблон 0011 повторяется бесконечно.

Пусть a будет шаблоном (0011 для x), а k будет его длиной (т.е. 4 для x).

х = а×2^-к+а×2^-2к+...
= a×2^-k×∑i=0 (2^-k)^i
= a×2^-k×limn→∞(1-(2^-k)^n)/(1-2^-k)
поскольку x - это сумма геометрического ряда с отношением 2 ^ k.

Когда n стремится к ∞, (2^-k)^n стремится к нулю, и мы имеем
х = а × 2 ^ -к / (1-2 ^ -к) = а / (2 ^ к-1)

Если x=0,11111..., a=1, k=1 и x=1/(2-1)=1, мы получаем результат, уже представленный (гораздо проще!) Лутцем, который отвечает на исходный вопрос.

Но мы можем решить более сложные задачи с любым повторяющимся шаблоном.
Например, если x=0,001100110011..., мы имеем a=0011=3 и k=4.
Отсюда х=3/(2^-4-1)=1/5=0,2

Обобщение ситуации, когда повторяющемуся паттерну предшествует неповторяющаяся последовательность, является немедленным.

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

Как прочитать перевернутое число из двоичного файла?
Как преобразовать 16-битные шестнадцатеричные и двоичные представления в десятичное число с плавающей запятой (и наоборот) в python?
Кто помнит алгоритм упаковки 4-байтового целого числа в массив от 1 до 4 байт в зависимости от количества значащих цифр?
Разбор бинарного файла со смешанной структурой
Разница между двоичным MUL ARM и манипулированием данными
Как правильно кодировать/декодировать файл excel с помощью Python?
Как я могу прочитать этот двоичный файл из python с представленным двоичным файлом, текстовым файлом и кодом?
Как исправить «нет подходящей функции для вызова ...» в С++?
SQL или R: Найдите и отобразите индекс всех «1» из столбца с двоичным типом данных и сохраните в другом 1 или нескольких столбцах
Как преобразовать двоичный файл в шестнадцатеричный в Batch или Powershell?