Hace 8 años | Por --268494-- a blogthinkbig.com
Publicado hace 8 años por --268494-- a blogthinkbig.com

¿Sabes de la existencia del número 2147483647? Probablemente no, pero ahora sabrás por qué es tan importante en el mundo de la tecnología.

Comentarios

D

#4 Pues te lo explico con 3 bits, y extrapolas a 32. Con 3 bits puedes representar sin signo del 000 a 111, es decir, de 0 a 7 en decimal. Pero si quieres tener signo, puedes ir del -3 al +3 usando la convención de que el bit mas significativo (el de la izquierda) indica signo negativo cuando vale 1. Cuando sumas uno a 3, como fisicamente no puedes albergar el numero 4, tienes el "bug" que indica, y que basicamente lo que pensabas que vale 4 vale en realidad -0, con lo cual detectas que algo va mal y todo se va al guano en el software porque tiene un valor "imposible". En un sistema normal, eso genera como poco un segmentation fault cuando estas en modo usuario, o algo por el estilo. En los tiempos de MS DOS podian ocurrir cosas muy graciosas cuando ibas alegremente incrementando punteros, contadores y tal

Karmarada

#7 #8 Gracias, siempre se aprende algo.

Ovlak

Afortunadamente, ahora tenemos los sistemas de 64-bit que no sufren de esta limitación.

Hablar sin tener ni puta idea. Los sitemas de 32-bit pueden trabajar con tipos de datos de más de 32 bits. La diferencia es que necesitan más ciclos de reloj para operar con ellos. Lo que no pueden hacer en ningún caso es direccionar memoria mayor a 2^32 direcciones.

ElCuraMerino

#6 Bueno, pero si en su momento muchos no tuvieron en cuenta lo que dices, me parece ilustrativo el artículo.

D

je, pos claro 2^32/2 - 1. Capitan obvious. El artículo es esencialmente incorrecto, dado que un sistema informatico puede direccionar 2^32 direcciones, el asuntillo está en los 32 bits y como van los signos. Ahí reduces a la mitad cuanto puedes meter en un entero largo, por ejemplo si deseas conservar el signo.

Karmarada

Pues la verdad es que no tenía ni idea, me parece muy interesante #1 ¿me lo explicas un poco?

Campechano

#4 Es aritmética binaria. De la misma manera que añadir un dígito a un número decimal multiplica por 10 los números que puedes representar (con dos dígitos representas 100 números: 0-99, y con tres 1000: 0-999), en binario lo multiplica por dos. Si a eso le sumas que los circuitos digitales solo representan ceros o unos (no hay signos ni puntos decimales), la única forma de representar el signo es usar uno de los dígitos (0 positivo y 1 negativo por ejemplo). Si reservas el primer dígito de un número para indicar su signo, divides por dos el máximo número representable al quitarle un dígito. Luego estaría el tema de los decimales, pero eso es ya mucho más complicado porque tiene varios enfoques

D

Curioso que no hable del efecto 2038, aunque supongo que a estas alturas debe de estar ya solucionado, después de todo, el efecto 2000 no fue nada.

Catacroc

Ostia, ni se me habia ocurrido, pensaba que pasaba del 2147483646 al 2147483648.

D

Es el que sale siempre cuando pones el anular del dedo izquierdo sobre la tecla del 2 en el teclado y luego golpeteas al azar con el resto.

Homertron3

Pedir más creo que sería "pasarse"

D

Al ver el artículo lo primero que me ha venido a la cabeza es el futuro problema del año 2038:
https://es.wikipedia.org/wiki/Problema_del_a%C3%B1o_2038

A priori es parecido al efecto 2000, aunque creo que será bastante peor por la cantidad de aparatitos (sobre todo industriales) que utilizan versiones de Unix para sistemas embebidos y/o en tiempo real (como el QNX que se usaba en Blackberry).