Similar a la decimal de los números binarios puede tener representan flota demasiado. Ahora he leído que se puede tener flota de la clase

0.5:0.1 , 0.25:0.01 , 0.125:0.001 … y así sucesivamente. Pero entonces, por ejemplo, cómo es el 0.1(en decimal), representado en binario?

También, dado un decimal float, cómo convertir el decimal equivalente, (dado que no es tan sencillo).

Edit: por Lo que entiendo que la mejor pregunta hubiera sido ; cómo convertir un decimal float a binario? Ahora tengo que multiplicamos la parte decimal, hasta que se convierte en cero.
Ahora es muy posible que dos flotante puntos puede tener la misma representación de la derecha?

InformationsquelleAutor | 2012-12-01

2 Comentarios

  1. 5

    Dado cuántos bits?

    0.1 b:

    0.00011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011...
    

    Como puedes ver es una aproximación.

    Binary                                          Decimal
    0.1     == 1/2^1         == 1/2              == 0.5
    0.01    == 1/2^2         == 1/4              == 0.25
    0.11    == 1/2^1 + 1/2^2 == 1/2 + 1/4 == 3/4 == 0.75
    

    Cada poco después de que el radix punto representa 1/2^(position_after_bit_string).

    postion:   |1|2|3|4|5|6|7|
             0.|0|0|0|0|0|0|1|
    

    Así 0.0000001 = 1/2^7 = 0.0078125

    Pseudocódigo:

    decimal_value = 0 
    for i, bit in enumerate(binary_string):
        if bit == 1
             decimal_value += 1/2**i
    

    Para obtener más información Por qué no pueden los números decimales se pueden representar exactamente en binario?

    • ahora es muy posible que dos flotante puntos puede tener la misma representación de la derecha?
    • No, una cadena de bits tiene sólo un valor de uso de esta representación.
    • Cuando se convierten los números de punto flotante (como por el análisis de una cadena que contiene el número y la conversión de punto flotante), números diferentes que pueden producir el mismo resultado. Es impreciso decir que el resultado de punto flotante representa estos números. Por el estándar IEEE 754, un valor de punto flotante representa precisamente número uno, el uno que se obtiene por la interpretación de su codificación como se especifica en la norma. Se puede decir que dos números diferentes pueden tener la misma aproximación en punto flotante, pero es importante recordar que es sólo una aproximación.
  2. 0

    Otra observación que podría ser útil. La » parte entera de un número de punto flotante está presente en el binario en su ‘normal’ de la forma, por ejemplo si el valor es 25.7482 tendrá los bits ‘11001’ (25) en el punto flotante, con los bits siguientes representan la fracción (en realidad el primer ‘1’ nunca se almacena, es implícita en el formato).
    Si usted resta 25.0 a partir de ese número, y multiplicar por 10, se obtiene 7.482, y mediante el examen de la parte entera de que el valor, usted puede obtener los primeros fraccionaria, ‘7’.

    Restar 7.0, multiplicar por 10 da 4.82 , así que la siguiente dígito ‘4’, y así sucesivamente. Este proceso en la teoría de terminar, finalmente, con un resultado de cero, ya que todos los valores que puede ser exactamente representada en formato de punto flotante tienen una exacta representación decimal; sin embargo, de que ‘exacta’ resultado podría tener mucho más dígitos de los que son realmente razonables dada la precisión de la original de punto flotante (y puede que necesite más de precisión internamente para obtener plenamente resultado exacto, de todos modos – que usted necesita para asegurar la multiplicación por 10, no se genera un error de redondeo).

    Y, para los números como 6.432 e-200 ,este método es viable, pero no es muy eficiente (se estaría generando 199 ceros antes de la primera ‘6’ surgido).

Dejar respuesta

Please enter your comment!
Please enter your name here