Dado double x
, y suponiendo que se encuentra en [0,1]
. Supongamos por ejemplo que x = 0,3 en binario, (manteniendo 10 dígitos después del punto decimal), se representa comoExtraer dígitos de un carro C++
x=0.0100110011...
quiero escribir algunos código C++ que extraer los 10 dígitos que se muestran después del punto decimal . En otras palabras, quiero extraer el número entero (0100110011) _2.
Ahora estoy bastante nuevo para desplazamiento de bits y la solución (ingenuo), que tengo para el problema es el siguiente
int temp= (int) (x*(1<<10))
Entonces temp
en binario tendrán los 10 dígitos NECESARIO.
¿Es esta una manera segura de realizar el proceso anterior? O ¿hay formas más seguras/más correctas de hacer esto?
Nota: No quiero que los dígitos extraídos en forma de una matriz de caracteres. Específicamente quiero un número entero (O entero sin signo) para esto. La razón para hacer esto es que en la generación de octrees, los puntos en el espacio reciben claves hash basadas en su posición denominada Morton Keys. Estas claves generalmente se almacenan como enteros. Después de obtener las claves integr para todos los puntos, se ordenan. Teóricamente, estas claves se pueden obtener escalando las coordenadas a [0,1], extrayendo los bits e intercalando los mismos.
10 dígitos binarios o dígitos decimales? –
¿Por qué no imprimir * toda * mantisa, con tantos ceros al principio como sea necesario? –
@ Oli Charlesworth: Por favor, mira editar. He aclarado mi pregunta. – smilingbuddha