Numeración basada en cero

ImprimirCitar
Contando desde "0" en lugar de "1" primero

La numeración basada en cero es una forma de numeración en la que al elemento inicial de una secuencia se le asigna el índice 0, en lugar del índice 1, como es típico en las actividades no matemáticas o circunstancias no relacionadas con la programación. En la numeración basada en cero, el elemento inicial a veces se denomina elemento cero, en lugar de elemento primero; zeroth es un número ordinal acuñado que corresponde al número cero. En algunos casos, un objeto o valor que no pertenece (originalmente) a una secuencia dada, pero que podría colocarse naturalmente antes de su elemento inicial, puede denominarse elemento cero. No hay un amplio acuerdo sobre la corrección de usar cero como ordinal (ni sobre el uso del término zeroth), ya que crea ambigüedad para todos los elementos posteriores de la secuencia cuando carece de contexto.

Las secuencias de numeración que comienzan en 0 son bastante comunes en la notación matemática, en particular en la combinatoria, aunque los lenguajes de programación para matemáticas generalmente indexan desde 1. En informática, los índices de matriz generalmente comienzan en 0 en los lenguajes de programación modernos, por lo que los programadores de computadoras pueden usar zeroth en situaciones en las que otros podrían usar first, y así sucesivamente. En algunos contextos matemáticos, la numeración basada en cero se puede usar sin confusión, cuando las formas ordinales tienen un significado bien establecido con un candidato obvio para ir antes del primero; por ejemplo, una derivada cero de una función es la función misma, obtenida al diferenciar cero veces. Tal uso corresponde a nombrar un elemento que no pertenece propiamente a la secuencia pero que la precede: la derivada cero no es realmente una derivada en absoluto. Sin embargo, así como la primera derivada precede a la segunda derivada, también la derivada cero (o la función original misma) precede a la primera derivada.

Programación informática

Origen

Martin Richards, creador del lenguaje BCPL (un precursor de C), diseñó matrices que iniciaban en 0 como la posición natural para comenzar a acceder a los contenidos de la matriz en el lenguaje, ya que el valor de un puntero p utilizado como dirección accede a la posición p + 0 en la memoria. BCPL se compiló por primera vez para IBM 7094; el lenguaje no introdujo búsquedas indirectas en tiempo de ejecución, por lo que la optimización indirecta proporcionada por estas matrices se realizó en tiempo de compilación. Sin embargo, la optimización fue importante.

Edsger W. Dijkstra más tarde escribió una nota pertinente Por qué la numeración debería comenzar en cero en 1982, analizando los posibles diseños de índices de matriz encerrándolos en una desigualdad encadenada, combinando desigualdades agudas y estándar a cuatro posibilidades, demostrando que, según su convicción, las matrices basadas en cero se representan mejor mediante rangos de índices que no se superponen, que comienzan en cero, aludiendo a intervalos abiertos, semiabiertos y cerrados como con los números reales. Los criterios de Dijkstra para preferir esta convención son, en detalle, que representa secuencias vacías de una forma más natural (ai < a ?) que "intervalos" (ai ≤ (a − 1) ?), y eso con la mitad -abrir "intervalos" de naturales, la longitud de una subsecuencia es igual al límite superior menos el inferior (ai < b da (ba) valores posibles para i, con a, b, i todos enteros).

Uso en lenguajes de programación

Este uso se deriva de las opciones de diseño integradas en muchos lenguajes de programación influyentes, incluidos C, Java y Lisp. En estos tres, los tipos de secuencia (arreglos C, arreglos y listas Java, y listas y vectores Lisp) se indexan comenzando con el subíndice cero. Particularmente en C, donde los arreglos están estrechamente ligados a la aritmética de punteros, esto hace que la implementación sea más simple: el subíndice se refiere a un desplazamiento desde la posición inicial de un arreglo, por lo que el primer elemento tiene un desplazamiento de cero.

La referencia a la memoria mediante una dirección y un desplazamiento se representa directamente en el hardware de la computadora en prácticamente todas las arquitecturas de computadora, por lo que este detalle de diseño en C facilita la compilación, a costa de algunos factores humanos. En este contexto, el uso de "ceroth" como ordinal no es estrictamente correcto, sino un hábito muy extendido en esta profesión. Otros lenguajes de programación, como Fortran o COBOL, tienen subíndices de matriz que comienzan con uno, porque estaban destinados a ser lenguajes de programación de alto nivel y, como tales, tenían que tener una correspondencia con los números ordinales habituales que son anteriores a la invención del cero por mucho tiempo.

Pascal permite que el rango de una matriz sea de cualquier tipo ordinal (incluidos los tipos enumerados). APL permite establecer el origen del índice en 0 o 1 durante el tiempo de ejecución programáticamente. Algunos lenguajes recientes, como Lua y Visual Basic, han adoptado la misma convención por la misma razón.

Cero es el valor entero sin signo más bajo, uno de los tipos más fundamentales en programación y diseño de hardware. En informática, el cero se usa a menudo como el caso base para muchos tipos de recursividad numérica. Las pruebas y otros tipos de razonamiento matemático en informática a menudo comienzan con cero. Por estas razones, en informática no es inusual numerar desde cero en lugar de uno.

En los últimos años, este rasgo también se ha observado entre muchos matemáticos puros, donde muchas construcciones se definen para ser numeradas desde 0.

Si se utiliza un arreglo para representar un ciclo, es conveniente obtener el índice con una función de módulo, que puede dar como resultado cero.

Propiedades numéricas

Con la numeración basada en cero, un rango se puede expresar como el intervalo semiabierto, [0, n), a diferencia del intervalo cerrado, [1, n]. Los rangos vacíos, que a menudo ocurren en los algoritmos, son difíciles de expresar con un intervalo cerrado sin recurrir a convenciones obtusas como [1, 0]. Debido a esta propiedad, la indexación basada en cero reduce potencialmente los errores de uno y otro poste. Por otro lado, el recuento de repeticiones n se calcula de antemano, utilizando el conteo de 0 a n − 1 (inclusivo) menos intuitivo. Algunos autores prefieren la indexación basada en uno, ya que corresponde más a cómo se indexan las entidades en otros contextos.

Otra propiedad de esta convención es el uso de la aritmética modular tal como se implementa en las computadoras modernas. Por lo general, la función módulo asigna cualquier módulo entero N a uno de los números 0, 1, 2,..., N − 1, donde N ≥ 1. Debido a esto, muchas fórmulas en algoritmos (como la que se usa para calcular índices de tablas hash) se pueden expresar elegantemente en código usando la operación de módulo cuando los índices de matriz comienzan en cero.

Las operaciones de puntero también se pueden expresar de manera más elegante en un índice basado en cero debido a la lógica de dirección/desplazamiento subyacente mencionada anteriormente. Para ilustrar, suponga que a es la dirección de memoria del primer elemento de una matriz y i es el índice del elemento deseado. Para calcular la dirección del elemento deseado, si los números de índice cuentan desde 1, la dirección deseada se calcula mediante esta expresión:

a + s ×i −1),

donde s es el tamaño de cada elemento. Por el contrario, si los números índice cuentan desde 0, la expresión se convierte en

a + s × i.

Esta expresión más simple es más eficiente para calcular en tiempo de ejecución.

Sin embargo, un lenguaje que desee indexar arreglos desde 1 podría adoptar la convención de que cada dirección de arreglo esté representada por a′ = as; es decir, en lugar de usar la dirección del primer elemento de la matriz, dicho lenguaje usaría la dirección de un elemento ficticio ubicado inmediatamente antes del primer elemento real. La expresión de indexación para un índice basado en 1 sería entonces

a′ + s × i.

Por lo tanto, el beneficio de eficiencia en tiempo de ejecución de la indexación basada en cero no es inherente, sino que es un artefacto de la decisión de representar una matriz con la dirección de su primer elemento en lugar de la dirección del elemento cero ficticio. Sin embargo, la dirección de ese elemento ficticio bien podría ser la dirección de algún otro elemento en la memoria que no esté relacionado con la matriz.

Superficialmente, el elemento ficticio no escala bien a los arrays multidimensionales. Indización de arrays multidimensionales desde cero hace que una conversión ingenua (contigua) a un espacio de dirección lineal (variable sistémicamente un índice después del otro) se vea más simple que cuando se indexa desde uno. Por ejemplo, al mapear el array tridimensional A[P][N][M]{displaystyle mathrm {A} [P][N][M]} a un array lineal L[M⋅N⋅P], ambos con M⋅N⋅P elementos, el índice r en la matriz lineal para acceder a un elemento específico L[rAz[ ]Sí.[ ]x] en la indexación cero, es decir, [0 ≤ x. P] [0 ≤ Sí.. N] [0 ≤ z. M], y [0 ≤ r. M⋅N⋅P], se calcula por r = zMN + Sí.M + x. Organizar todos los arrays con índices de 1 base ([1 ≤ xP] [1 ≤ yN] [1 ≤ zM] [1 ≤ r′M⋅N⋅P]), y asumiendo un arreglo análogo de los elementos, da r′ =z − 1)MN +y − 1)M +x − 0 para acceder al mismo elemento, que supuestamente se ve más complicado. Por supuesto. r′ = r + 1, desde entonces [z = z′ – 1), [Sí. = Sí.′ – 1), y [x = x′ – 1]. Un ejemplo simple y cotidiano es la notación posicional, que la invención del cero hizo posible. En notación posicional, decenas, cientos, miles y todos los demás dígitos comienzan con cero, sólo las unidades comienzan en uno.

  • Cero- índices basados en datos
    x
    Sí.
    012..x=x.− − 1{displaystyle x=x'-1}..89
    0 0001020809
    1 1011121819
    2 2021222829
    ..
    Sí.=Sí..− − 1{displaystyle Sí.Sí.⋅ ⋅ M+x{displaystyle ycdot M+x}
    ..
    8 8081828889
    9 9091929899
    El contenido de la tabla representa el índice r.
  • Uno- índices basados en datos
    x '
    Sí. '
    123..x.=x+1{displaystyle x'=x+1}..910
    1 0102030910
    2 1112131920
    3 2122232930
    ..
    Sí..=Sí.+1{displaystyle y'=y+1}()Sí..− − 1)⋅ ⋅ M+x.{displaystyle (y'-1)cdot M+x}
    ..
    9 8182838990
    10 91929399100
    El contenido de la tabla representa el índice r′.

Esta situación puede generar cierta confusión en la terminología. En un esquema de indexación basado en cero, el primer elemento es "número de elemento cero"; asimismo, el duodécimo elemento es "elemento número once". Aparece, pues, una analogía de los números ordinales a la cantidad de objetos numerados; el índice más alto de n objetos será n − 1, y se refiere al elemento nésimo. Por esta razón, el primer elemento a veces se denomina elemento cero, en un intento de evitar confusiones.

Ciencia

En matemáticas, muchas secuencias de números o de polinomios están indexadas por números enteros no negativos, por ejemplo, los números de Bernoulli y los números de Bell.

Tanto en mecánica como en estadística, se define el momento cero, que representa la masa total en el caso de la densidad física, o la probabilidad total, es decir, uno, para una distribución de probabilidad.

La ley cero de la termodinámica se formuló después de la primera, segunda y tercera ley, pero se consideró más fundamental, de ahí su nombre.

En biología, se dice que un organismo tiene intencionalidad de orden cero si muestra "ninguna intención de nada en absoluto". Esto incluiría una situación en la que el fenotipo predeterminado genéticamente del organismo resulte en un beneficio de aptitud física para sí mismo, porque no 'tenía la intención' de para expresar sus genes. En un sentido similar, una computadora puede ser considerada desde esta perspectiva como una entidad intencional de orden cero, ya que no "pretende" para expresar el código de los programas que ejecuta.

En experimentos biológicos o médicos, se dice que las mediciones iniciales realizadas antes de que haya transcurrido el tiempo experimental se realizan en el día 0 del experimento.

En genómica, se utilizan sistemas basados en 0 y 1 para las coordenadas del genoma.

Paciente cero (o caso índice) es el paciente inicial en la muestra de población de una investigación epidemiológica.

Otros campos

El año cero no existe en el calendario gregoriano ampliamente utilizado ni en su predecesor, el calendario juliano. Bajo esos sistemas, el año 1 a. C. es seguido por 1 d. C. Sin embargo, hay un año cero en la numeración de años astronómicos (donde coincide con el año juliano 1 a. C.) y en ISO 8601: 2004 (donde coincide con el año gregoriano 1 BC), así como en todos los calendarios budista e hindú.

En muchos países, la planta baja de los edificios se considera el piso 0 en lugar del "primer piso", la convención de nomenclatura que suele encontrarse en los Estados Unidos de América. Esto hace un conjunto consistente con pisos subterráneos marcados con números negativos.

Si bien el ordinal de 0 se usa principalmente en comunidades directamente relacionadas con las matemáticas, la física y la informática, también hay instancias en la música clásica. El compositor Anton Bruckner consideró que su primera Sinfonía en re menor no era digna de incluirse en el canon de sus obras, y escribió gilt nicht ("no'cuenta") en la partitura y un círculo con un travesaño, con la intención de que signifique "inválido". Pero póstumamente, esta obra llegó a conocerse como Sinfonía n.º 0 en re menor, aunque en realidad fue escrita después de la Sinfonía n.º 1 en do menor. Hay una Sinfonía en fa menor incluso anterior de Bruckner, que a veces se llama No. 00. El compositor ruso Alfred Schnittke también escribió una Sinfonía No. 0.

En algunas universidades, incluidas Oxford y Cambridge, la "semana 0" u ocasionalmente "la semana cero" se refiere a la semana anterior a la primera semana de conferencias en un trimestre. En Australia, algunas universidades se refieren a esto como "Semana O", que sirve como un juego de palabras con "semana de orientación". Como paralelo, las semanas introductorias en la educación universitaria en Suecia generalmente se denominan nollning (reducción a cero).

La Fuerza Aérea de los Estados Unidos comienza el entrenamiento básico todos los miércoles y se considera que la primera semana (de ocho) comienza el domingo siguiente. Los cuatro días anteriores a ese domingo a menudo se denominan "semana cero".

Los relojes de 24 horas y la norma internacional ISO 8601 utilizan 0 para indicar la primera (cero) hora del día, de forma coherente con el uso de 0 para indicar el primer (cero) minuto de la hora y el primer (cero) segundo del minuto. Además, los relojes de 12 horas que se usan en Japón usan 0 para indicar la hora inmediatamente después de la medianoche y el mediodía en contraste con el 12 que se usa en otros lugares, para evitar confusiones si las 12 a. m. y las 12 p. m. representan el mediodía o la medianoche.

La estación King's Cross de Londres, Edinburgh Haymarket y las estaciones de Uppsala, Yonago, Stockport y Cardiff tienen un Andén 0.

Los dibujos de Robert Crumb para el primer número de Zap Comix fueron robados, por lo que dibujó un número completamente nuevo, que se publicó como número 1. Más tarde volvió a entintar sus fotocopias de la obra de arte robada y la publicó como edición 0.

La carretera de circunvalación de Bruselas en Bélgica tiene el número R0. Se construyó después de la carretera de circunvalación de Amberes, pero se consideró que Bruselas (siendo la capital) merecía un número más básico. Del mismo modo, la autopista orbital (inacabada) alrededor de Budapest en Hungría se llama M0.

El cero se usa a veces en direcciones de calles, especialmente en esquemas donde los números pares están en un lado de la calle y los números impares en el otro. Un ejemplo de ello es Christ Church en Harvard Square, cuya dirección es 0 Garden Street.

En la Fórmula Uno, cuando un campeón mundial defensor no compite en la siguiente temporada, el número 1 no se asigna a ningún piloto, sino que un piloto del equipo campeón del mundo llevará el número 0 y el otro, el número 2 Esto sucedió tanto en 1993 como en 1994 con Damon Hill llevando el número 0 en ambas temporadas, ya que el campeón defensor Nigel Mansell renunció después de 1992 y el campeón defensor Alain Prost renunció después de 1993.

Una precuela cronológica de una serie se puede numerar como 0, como Ring 0: Birthday o Zork Zero.

Los Ferrocarriles Federales Suizos numeran ciertas clases de material rodante desde cero, por ejemplo, Re 460 000 a 118.

En el ámbito de la ficción, Isaac Asimov finalmente agregó una Ley Cero a sus Tres leyes de la robótica, convirtiéndolas esencialmente en cuatro leyes.

Contenido relacionado

Hormiga de langton

Rectángulo

Número construible

Más resultados...
Tamaño del texto:
Copiar