17Aug

¿Por qué las computadoras cuentan desde cero?

click fraud protection


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

Pregunta de hoy &La sesión de respuesta nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, una agrupación de sitios web Q & A dirigida por la comunidad.

El lector

SuperUser de QuestionD DragonLord siente curiosidad acerca de por qué la mayoría de los sistemas operativos y lenguajes de programación cuentan desde cero.Él escribe:

Las computadoras tradicionalmente cuentan los valores numéricos comenzando desde cero. Por ejemplo, las matrices 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 al contar desde uno?

¿Por qué?A pesar de estar tan extendida como la práctica, seguramente existen razones prácticas para su implementación.

La respuesta

SuperUser Contribuyente Matteo ofrece las siguientes ideas:

instagram viewer

El conteo de 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_del_elemento

Si considera el primer elemento el primero, el cálculose convierte en elemento

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

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

Editado para agregar:

  • El uso del índice de matriz como compensación no es un requisito, sino solo un hábito. La compensación del primer elemento podría estar oculta por el sistema y tenerse en cuenta al asignar y hacer referencia al elemento.
  • Dijkstra publicó un artículo titulado "Por qué la numeración debería comenzar en cero"( pdf) donde explica por qué comenzar con 0 es una mejor opción. Comenzar en cero permite una mejor representación de los rangos.

Si está buscando profundizar en la respuesta, el documento de Dijkstra es una lectura informativa.

¿Tiene algo que agregar a la explicación? Suena apagado en los comentarios.¿Desea leer más respuestas de otros usuarios de Stack Exchange expertos en tecnología? Mira el hilo de discusión completo aquí.