Suena extraño, pero puedes usar el doble, no solo int. ¿Por qué? Comprobar formato de punto flotante de doble precisión
Para potencias de dos no hay dígitos que se pierdan debido a la precisión, ya que es solo un bit y toda la información se almacena en exponente, que puede ser hasta 1023, que es mucho más que 63 para uint64_t.
Puede comenzar con 1 y simplemente multiplicarlo por 2 e imprimirlo. Dependiendo de su máquina, la multiplicación de números en coma flotante no es la operación más barata, por lo tanto, también podría explotar la estructura del doble y modificar exactamente los bits necesarios, digamos mediante la suma de enteros.
- ¿Qué algoritmo es mejor para una variante 4 * 4 * 4 * 4 del último dedo del pie tic-tac considerando un límite de tiempo de 15 segundos?
- ¿Cuál es la mejor prueba de primalidad que garantiza un resultado 100% exacto pero que se puede hacer en un tiempo polinómico?
- ¿Qué tan complejos son los algoritmos que usan los sitios web de citas como eHarmony para unir a las personas?
- ¿Qué estoy haciendo mal al determinar el big-O de estas funciones Java?
- ¿Podemos construir un sistema utilizando algoritmos de aprendizaje automático que puedan reemplazar a todas las empresas de consultoría financiera y técnica del mundo?
#include #incluye union doubleUnion { doble d; uint64_t i; }; int main () { doubleUnion num; const uint64_t expbit = uint64_t (1) << 52; num.d = 1; para (int i = 0; i <(1 << 10); i ++) { std :: cout << std :: fijo << std :: setprecision (0) << num.d << std :: endl; num.i + = expbit; } }
Este código podría ser un ejemplo de cómo lograr esto. Da un número entre 1 y 2 ^ 1023 y lo hace a alta velocidad.