7 votos

El número de cifras significativas cuando se va de base 10 a binario.

¿Cuál es la correspondencia entre el número de cifras significativas en base 10 y la base 2?

O en otras palabras, si dos números decimales son iguales a $N_{10}$ cifras significativas, ¿cuál es el número de cifras significativas, $N_{2}$, a la que tengo que compararlos en binario, por lo que voy a obtener el mismo resultado?

Ejemplo: supongamos $N_{10} = 2$, es decir, vamos a comparar a $2$ cifras significativas en base 10. En este caso: $$ 100 = 102 \text{ (both round to 100)} $$ $$ 105 = 114 \text{ (both round to 110)} $$ En binario $100_{10} = 1100100_{2}, 102_{10} = 1100110_{2}, 105_{10} = 1101001_{2}, 114_{10} = 1110010_{2}$. De este ejemplo en particular, parece que $N_{2} = 3$.

¿Por qué planteo esta pregunta: estoy tratando de poner en práctica eficiente de la comparación de igualdad en el que se respeta el número de cifras significativas. En última instancia, me gustaría que para lograr todo en binario el uso turístico de las operaciones del turno.

5voto

Danny Rorabaugh Puntos 174

Fijo $N_{10}$, no $N_2$ existe.

Prueba:
Dada una tentativa $N_2$, $n = 2^{N_2} + 1$ (dos $1$s con $(N_2 - 1)$ $0$s entre). A continuación, en base $2$, $n\cdot 2^k$ siempre redondea $(n+1)\cdot 2^k$. Sin embargo $n\cdot 2^k - 1$ redondea hacia abajo a $(n-1)\cdot 2^k$. Desde $n\cdot 2^k$ $n\cdot 2^k - 1$ ronda a la misma $N_{10}$ dígitos significativos en base a $10$ durante al menos una $k$, $N_2$ no funciona.

1voto

Tim Cochran Puntos 804

Hay un "barato" del programador de truco que hace el trabajo, aunque tengo la esperanza de que a alguien se le ocurre una mejor respuesta matemática.

Consideramos que la tarea básica de redondeo a$10^n$, $n$ un entero (y no necesariamente positivo)

La fórmula para el redondeo $x$ es entonces

$$\lfloor \frac{x+ 10^n/2}{10^n} \rfloor 10^n$$

Estos son todos fáciles de bits manipulaciones, excepto para la división dentro de la función del suelo. ($10^n$ es una constante, la división por 2 es un desplazamiento a la izquierda, suelo de un valor es simplemente truncar una cadena de bits)

La idea es que podamos aproximada de la división (para una precisión arbitraria) mediante la división y la multiplicación. Para el redondeo de arriba, queremos aproximar la división por $10^n$.

Dicen que desee dividir por $10$. Podemos dividir por $2^{20}=1048576$ en su lugar, y luego se multiplica por $1048576/10 = 104857.6 \approx 104858$. Esto da aproximadamente 5 dígitos significativos. En otras palabras, se multiplica por 104858 y, a continuación, mayús izquierda por 20, y truncar.

En esencia, si sabemos la cantidad de dígitos significativos antes de tiempo, se puede pre-proceso de una simple división/algoritmo de la multiplicación que le ronda por nosotros.

El número total de dígitos significativos (para la división, no por redondeo) es igual a la potencia de dos usamos dividido por la potencia de $10$ utilizado en la división.

Esto no es mucho peor que el de algunos de los mejores de la división de los algoritmos de allí. Además, es extremadamente simple.

1voto

Shabaz Puntos 403

Cifras significativas son un camino áspero de la evaluación de la exactitud relativa de un número. $98$ $11$ , cada una tiene dos cifras significativas, pero si asigna un error absoluto máximo de $\pm 0.5$ a cada uno, el error relativo es de alrededor de $0.5\%$ en el primer caso y $4.5\%$ en el otro. Un factor de $3$ está en línea con la rugosidad de la aproximación. Incluso en una sola base, usted puede tener problemas con lleva. Si el valor real es de $9.999994 \pm 0.000002$, todavía podría redondear a $10$, pero ese pequeño error se suele dar en sx cifras significativas de un número de orden de $10$.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X