Comenzamos a contar utilizando un modelo mental que requiere que haya algo para contar, pero estrictamente hablando, no somos diferentes de una computadora, simplemente no necesitamos comenzar desde cero debido a nuestra capacidad de pensamiento abstracto. Cuando le asigna a una computadora una tarea de conteo, la configuración de la variable de datos de recepción consiste en borrar la memoria reservada y asegurarse de que ya esté en cero antes de que comience el procesamiento. Uno de los ‘bugs’ más comunes que he visto en el pasado es un programador que se niega a limpiar ese espacio de memoria. Si esto ocurre, CUALQUIER COSA (incluso una parte de una oración) ya podría estar allí, lo que provocará que la computadora comience con un número aleatorio (ya que toda la memoria puede ser numérica o de caracteres y solo se trata como una u otra basada en una definición de campo) dando como resultado errores de conteo reales, errores de desbordamiento o errores lógicos extremos que dependen del contenido. Por lo tanto, la ÚNICA razón por la que una computadora comienza a contar desde cero se debe a que un programador de software establece el valor de la variable en cero al cargar el programa en la RAM. En cualquier lenguaje de programación de software hay dos pasos distintos para la creación de una variable con nombre: 1. Creación (asignación de nombre y definición por tipo) e inicialización (asegurándose de que la variable definida se establece con un valor de datos significativo según lo determinan los requisitos de tu logica
¿Por qué las computadoras comienzan en cero? cuando la mayoría de los humanos comienzan a la una, cuando cuentan?
Related Content
¿Cuáles son algunos ejemplos de crueldad humana?
Si todos los pilotos del mundo murieran, ¿volverían a volar los humanos alguna vez?
Es una vieja broma que si le pides a un programador que cuente hasta 10, dicen “cero, uno, dos …”
Las computadoras comienzan en cero porque es estúpido si comienzas en una, perdiendo un número perfectamente bueno cuando tu contador de 4 bits solo tiene 16 estados para comenzar. Si construyes electrónica digital a partir de flip-flops (que es con lo que las computadoras se construyen internamente), puedes configurar un contador a cero eliminando todos los flip-flops (un cable conectado al pin de reinicio en cada uno). Establecerlo en uno requiere hacer algo diferente con el bit menos significativo. ¿Por qué trabajar para usted mismo? Si realmente desea comenzar a contar en uno para mantener felices a los humanos, repárelos en el software más adelante. O no lo hagas
Por cierto, como recuerdo, FORTRAN IV tenía índices de matrices comenzando en uno, por lo que vería un código como
DO 15 K = 1,5
A (K) = K + 3
15 CONTINUAR
En C y Perl y en la mayoría de los otros idiomas, los índices de matriz comienzan en cero, por lo que parece
para ($ k = 0; $ k <5; $ k ++) {$ a [$ k] = $ k + 3; }
Muchas justificaciones y contexto, pero nadie ha respondido la pregunta todavía.
La razón es porque estamos contando cosas diferentes. Los humanos cuentan la longitud de la lista, mientras que las computadoras cuentan las posiciones en una lista. Por ejemplo:
Tienes una lista vacía.
Usted agrega “Item 1” a la lista.
Ahora hay 1 cosa en la lista, en la posición 0. Entonces dices “Uno”.
Ha contado la longitud de la lista en esa posición, porque le importa cuántas cosas hay, no cómo encontrarlas dentro de la lista.
Haz lo mismo con 25 cosas en la lista. Usted agrega la cosa 25 y dice “veinticinco” porque esa es la cosa 25 en la lista. Pero todavía está en la posición 24. Vuelve a la quinta cosa en la lista, en la posición 4, y dirías “cinco”, porque es la quinta cosa en la lista.
Lo que le importa al cerebro humano es cuántas cosas hay (el número de elementos, incluidos los elementos anteriores, o la longitud de la lista), porque no tenemos un sistema de indexación instantáneo (tenemos que contar para volver a encontrar esa posición), mientras que las computadoras tienen un sistema de indexación instantáneo, basado en la posición del elemento de la lista.
Entonces, las computadoras cuentan las posiciones dentro de una lista, mientras que contamos el número de elementos en la lista.
Debido a que es muy conveniente que el índice de un elemento en una lista se corresponda con “¿a qué distancia del principio de la lista está este elemento?” Lo obtiene cuando comienza a contar a cero, porque el primer elemento no está “a una distancia desde el principio de la lista “, el segundo elemento es” un elemento alejado del principio de la lista “, etc. No lo obtiene cuando comienza a contar con uno. Desde el punto de vista de la computadora, si comienza con cero, entonces la computadora puede encontrar el contenido del elemento i simplemente agregando i a la dirección de memoria donde comienza la matriz. Esa es la regla más simple posible.
De hecho, los primeros lenguajes informáticos (Fortran, Cobol) en realidad indizaron matrices a partir de uno. Los programadores tardaron un par de décadas en darse cuenta de que esta no era la mejor manera de hacer las cosas. Casi todos los lenguajes inventados desde la década de 1970 inician los índices de matriz en cero.
La respuesta práctica es que contar desde uno termina causando más errores de programación que contando desde cero. Una vez que aprenda la programación, se dará cuenta rápidamente de que los arreglos basados en cero son más intuitivos y más fáciles de trabajar.
Para comenzar, es importante entender que las computadoras no se “inician” de forma intrínseca en ningún número, y las computadoras no “cuentan” de manera inherente.
Las computadoras almacenan información como colecciones de bits , las unidades más pequeñas de dicha información.
Hace décadas, cada bit estaba incorporado en unos pequeños anillos magnéticos (“núcleo”) a través de los cuales había cables que (a) configuraban la magnetización de cada núcleo en una dirección u otra y (b) leían el estado magnético de cada núcleo.
Hoy en día, un poco se materializa en transistores grabados en silicio. Cada uno de estos bits, como los bits de décadas anteriores descritos anteriormente, tiene uno o dos estados.
Para los propósitos de esta respuesta, es importante darse cuenta de que el estado de un bit refleja alguna propiedad física, como el voltaje. Pero a los seres humanos no les importa esa propiedad, per se.
Podemos pensar que cada bit está apagado o encendido, como un interruptor de luz. Sin embargo, para muchos propósitos, incluido el matemático, es útil pensar que off tiene el valor 0 y on tiene el valor 1 .
- Solo para ser claros, a pesar de lo que uno lee con frecuencia, los bits de computadora no son ceros, sino que así es como los interpretamos para que sean fáciles de entender y usar.
- Dibujando una analogía con el mundo físico cotidiano, imagine un grifo que esté completamente apagado o completamente abierto. Apagado = sin flujo = 0. Encendido = flujo completo = 1.
- Dando vueltas, hoy es común ver un interruptor físico que está etiquetado con un 0 y un 1, el 0 representa la posición de apagado y el 1 representa la posición de encendido.
Al combinar bits de acuerdo con los diseños especificados por el hombre, las computadoras hacen números que son mayores que 0 y 1. Para una explicación detallada, consulte la discusión de Wikipedia sobre conteo en binario (número binario).
Así que mi respuesta a la pregunta es: la numeración de la computadora comienza en cero porque cero representa el estado “apagado”, o el más bajo, que los bits relevantes posiblemente puedan tener.
Dos razones:
- El direccionamiento de memoria, con una computadora, abordamos la memoria usando un número, luego podemos mirar esa memoria agregando un número (un desplazamiento) a la dirección de la memoria. Si no tuviéramos 0, desperdiciaríamos una compensación por cada asignación de memoria.
- Necesitamos 0, si tengo 5 manzanas, 4 manzanas, 3 manzanas … ¿Cómo represento la idea de cero manzanas?
Es posible que los humanos no comiencen a contar a cero, pero de lo contrario tenemos una idea muy sólida de por qué necesitaríamos un número para representar “ninguno” y las computadoras también.
Creo que lo que quiere saber es por qué la indexación, la numeración de matrices, los valores de las variables en los bucles y otros lenguajes de PROGRAMACIÓN utilizan 0 como valor de inicio.
Que yo sepa, es una convención, probablemente para que el programa de computadora pueda ser modular.
Esto es diferente cuando se le pregunta a uno, ¿cuántos elementos hay? Para responder comienzas con 1 como en el lenguaje normal.
¿Confuso? Trate de averiguar el código de otra persona.
Siempre puede comenzar con cualquier número que desee, pero confundirá a cualquiera que intente mantener su código.
Solo para agregar a algunas de las otras respuestas aquí, los buenos programadores de lenguaje ensamblador no cuentan de 1 a 10, ni siquiera cuentan de 0 a 9. Cuentan de 9 a 0.
La razón es que, en la mayoría de las arquitecturas de CPU, es mucho más eficiente comparar un registro a cero que a un valor específico. De hecho, en algunas CPU, el acto de disminuir el registro también establecerá el indicador Z / NZ, por lo que ya tiene establecida la condición de su rama. Guarda un par de ciclos cada vez a través del bucle.
Debido a que internamente, en el nivel más bajo, una computadora comprende dos números: 0 y 1. Para representar números mayores que 1, agregamos más dígitos (conocidos como bits en una computadora). Cuando escribimos software, particularmente en los primeros días de la computación, nos pareció más útil simplemente comenzar con todos los bits que estábamos usando configurados en 0 cuando comenzamos a contar algo, ya que 0 es un número perfectamente válido para una computadora.
Todos los humanos cuentan desde cero. Simplemente no lo piensan la mayor parte del tiempo. Una de las cosas encantadoras sobre el cerebro humano es que utiliza conceptos abstractos con fluidez, sin que tengamos que contemplar por qué en ese momento.
Cuando contamos, el cero es el punto de partida asumido y estamos contando desde allí. ¿Cuántas manzanas hay en la mesa? El cerebro primero procesa si hay manzanas en la mesa, reconoce la ausencia de manzanas (cero) o la presencia de manzanas, y comienza a contar desde cero si hay manzanas. Si no hay manzanas en la mesa, reconocemos el cero porque nuestra respuesta será 0 o “ninguna”. Si hay manzanas en la mesa, las contamos en consecuencia, pero el cero todavía era el punto de partida, incluso si no lo incluimos conscientemente en la secuencia.
Puedo ir y escribir una historia muy larga sobre por qué lo hacen. Pero le sugiero que eche un vistazo a la publicación de los superusuarios. ¿Por qué las computadoras cuentan desde cero?
Voy a ir con, contamos desde cero también. Cero es el concepto cuando el objeto que estamos contando no está allí. Simplemente omitimos el cero (porque somos robots de computación hiper-paralelos asombrosos) y vamos directamente a UNO para anotar el primer objeto que estamos contando.
More Interesting
¿Debo aceptar todas las malas noticias de todo el mundo como parte de la humanidad?
¿Por qué todos los humanos tienen las mismas preguntas acerca de las respuestas sin respuesta?
¿Cuánto está diseñado nuestro cuerpo humano para vivir?
¿Qué les dirían los animales a los humanos si tuvieran la capacidad de hablar?
¿Cuáles son las 5 mayores preguntas formuladas por la humanidad?
¿Por qué la evolución no dio ojos humanos a la parte posterior de sus cabezas?
¿Qué tan exitosos han sido los humanos en la comunicación con otras especies en este planeta?
¿Es posible que el concepto humano de ‘creación’ esté equivocado? (Sobre el universo y todo)