Página principal » cómo » ¿Por qué las computadoras cuentan desde cero?

    ¿Por qué las computadoras cuentan desde cero?


    Contar desde cero es una práctica muy común en muchos lenguajes informáticos, pero ¿por qué? Sigue leyendo mientras exploramos el fenómeno y por qué está tan difundido..

    La sesión de Preguntas y Respuestas de hoy nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, un grupo de sitios web de preguntas y respuestas impulsado por la comunidad..

    La pregunta

    El lector SuperUser DragonLord tiene curiosidad acerca de por qué la mayoría de los sistemas operativos y lenguajes de programación cuentan desde cero. El escribe:

    Las computadoras tradicionalmente cuentan valores numéricos a partir de cero. Por ejemplo, los arrays en lenguajes de programación basados ​​en C comienzan desde el índice cero.

    ¿Qué razones históricas existen para esto y qué ventajas prácticas tiene contar desde cero tiene sobre contar desde uno??

    ¿Por qué de hecho? Tan extendida como es la práctica, seguramente hay razones prácticas para su implementación.

    La respuesta

    El colaborador de Superusuario Matteo ofrece las siguientes perspectivas:

    Contar matrices desde 0 simplifica el cálculo de la dirección de memoria de cada elemento.

    Si una matriz se almacena en una posición determinada en la memoria (se llama la dirección), la posición de cada elemento se puede calcular como

    elemento (n) = dirección + n * tamaño_de_el_elemento 

    Si consideras el primer elemento el primero, el cálculo se convierte en

    elemento (n) = dirección + (n-1) * tamaño_de_el_elemento 

    No es una gran diferencia, pero agrega una resta innecesaria para cada acceso.

    Editado para añadir:

    • El uso del índice de matriz como un desplazamiento no es un requisito sino un hábito. El sistema podría ocultar el desplazamiento del primer elemento y tenerlo en cuenta al asignar y hacer referencia al elemento..
    • Dijkstra publicó un documento titulado "Por qué la numeración debería comenzar en cero" (pdf) donde explica por qué comenzar con 0 es una mejor opción. Empezar desde cero permite una mejor representación de rangos..

    Si desea profundizar en la respuesta, el documento de Dijkstra es una lectura informativa..


    ¿Tienes algo que agregar a la explicación? Apague el sonido en los comentarios. ¿Quieres leer más respuestas de otros usuarios de Stack Exchange con experiencia en tecnología? Echa un vistazo a la discusión completa aquí.