Un número de coma flotante de precisión simple tiene 24 bits de significado (y el primer bit siempre es 1, por lo que solo se almacenan 23 bits).
[math] 2 ^ {24} [/ math] se representa en binario como 1 seguido de 24 ceros, por lo que su representación en coma flotante es
[matemáticas] 1.00000000000000000000000 \ veces 2 ^ {24} [/ matemáticas]
Agregar uno resultaría en
- ¿Cuál es el resto cuando x ^ 2015 se divide entre [matemáticas] x ^ 2-3x + 2 [/ matemáticas]?
- ¿En qué circunstancias [matemáticas] 1 + 2 \ cdot 3 + 4 [/ matemáticas] no evaluaría a [matemáticas] 11 [/ matemáticas] (aritmética de base 10)?
- ¿Existe una propiedad matemática que muestre [matemáticas] 5-2-1 = 5- (2 + 1) [/ matemáticas]?
- Cómo encontrar el límite de estas dos funciones
- ¿Cuál es el valor de [math] \ displaystyle \ int \ sqrt {\ sin x} \: dx [/ math]?
[matemáticas] 1.000000000000000000000001 \ veces 2 ^ {24} [/ matemáticas]
pero eso requiere 24 bits, y solo tenemos 23, por lo que se redondea hacia abajo. Así, en coma flotante de 32 bits [matemática] 2 ^ {24} + 1 = 2 ^ {24} [/ matemática].
Puede probar esto con un programa corto de C ++:
int main (int argc, char * argv []) {
flotador f = (1 << 24);
flotador f1 = f + 1;
si (f == f1) {
std :: cout << "¡Igual!" << std :: endl;
}
devuelve 0;
}
Ahora, ¿es [matemáticas] X = 2 ^ {24} [/ matemáticas] el ejemplo más pequeño posible? No podemos volvernos más pequeños cambiando el exponente, porque entonces el ‘1’ volverá a ser significativo. La otra forma de obtener la fracción igual a uno es si la proporción se redondea a 1, pero esto no ocurre (puede escribir nuevamente el código para verificar).