Я не знаю, как преобразовать неконвертируемое двоичное число (дробь) в десятичное. Может ли кто-нибудь научить меня, как это сделать с примером?Преобразовать неконвертируемое двоичное число в десятичное
ответ
Если двоичное число является целым числом без цели, оно будет бесконечным (положительным или отрицательным). Как вы можете представить бесконечное число в десятичной форме? Я думаю, что это ∞.
else, если двоичное число является числом с плавающей точкой, поздравляем. Во многих стандартах числа с плавающей точкой (например, IEEE 754) мантисса представлена двоичным паттерном, в котором старший бит имеет значение 1/2, второй бит имеет значение 1/4 и т. Д. Таким образом, вы можете преобразовать его в десятичную, аккумулируя каждый бит один за другим слева.
Например, у вас есть незавершенная двоичная скороговоркой сказать
10111011101110111011 .......
преобразовать в десятичную просто накапливают их
* 1/2 + * 1/4 + * 1/8 + * 1/16 + * 1/32 + * 1/64 + * 1/128 + * 1/256 ........
пока вы не получите достаточной точности.
Если у вас есть «повторяющееся десятичной» в базе 2, и вы знаете, что повторив часть его, можно превратить его в точную рационального числа в р/д обозначения (где р и q являются целыми числами). Затем вы можете использовать деление, чтобы преобразовать это число в обычную десятичную нотацию , чтобы столько цифр точности, сколько вы хотите. (В некоторых случаях вы даже можете записать точное десятичное значение.)
Первым шагом является разделение двоичного числа на его повторяющиеся и не повторяющиеся части. На самом деле мы хотим три вещи: неповторяющуюся часть, первое вхождение повторяющегося блока цифр, и длину повторяющегося блока цифр. Предположим, например, что число равно 1.0001100110011 ... (двоичный), , где последний 0011 повторяется бесконечно. Мы можем разбить это следующим образом: Не повторяющаяся часть равна 1.0 (двоичная), Первое вхождение повторяющегося блока составляет 0,00011 (двоичный), , а длина повторяющегося блока - четыре двоичных разряда.
Повторяющаяся часть двоичного числа является геометрической прогрессией и может быть оценен с использованием стандартной формулы для такой серии:
а + а * г + а * R^2 + а * г^3 + ... = a/(1 - r).
Чтобы применить эту формулу для повторяющихся цифр, значение является просто значением первого наступления повторяющегося блока. Если повторение часть имеет п двоичных разрядов, соотношение R в формуле составляет 1/2^п и 1/(1 - г) = (2^п)/(2^n - 1).
Для примера 1.00011011011 ... (двоичный), из повторяющейся части мы имеем с = 0,00011 (двоичный) = 3/32 и п = 4, так что 1/(1 - г) = (2^4)/(2^4 - 1) = 16/15. Поэтому
/(1 - г) = (3/32) * (16/15) = 3/30 = 1/10,
, который можно записать в виде 0,1 (десятичное). Не повторяющаяся часть, конечно, равна 1 (десятичная), поэтому
1.00011011011 ... (двоичный) = 1 + 0,1 (десятичный) = 1,1 (десятичный).
В этом примере десятичное представление является конечным и точным. Существует много повторяющихся двоичных дробей, для которых, где нет такого десятичного представления, например,
0,01010101 ... (двоичный) = 1/3 = 0,33333 ... (десятичный).
В таких случаях вы должны либо решить округлить после некоторого количества десятичных цифр, либо найти и описать повторяющийся шаблон десятичных цифр.