¿Cuál es el significado del número de columnas (16384) en MS Excel 2016?

29

Acabo de notar que el recuento de columnas de MS Excel aumentó de ZZ a XFD, es decir, 16,384 columnas. ¿Cuál es el significado de este valor particular? ¿Por qué los EM no fueron más lejos, hasta ZZZ? ¿Por qué se detuvieron en XFD?

Karth
fuente
1
No es exactamente la respuesta a su pregunta, pero MS enumera varias limitaciones de Excel aquí. support.office.com/en-us/article/…
matrix
2
Es una decisión de diseño arbitraria mantener la complejidad dentro de límites bien definidos. Técnicamente, el único límite son los recursos disponibles (memoria, CPU).
Daniel B
8
Como @teylyn ha explicado en su respuesta, los poderes de 2 son elecciones comunes en informática, sin embargo, la razón por la que MS eligió este valor probablemente no sea posible responder aquí, por lo que estoy votando para cerrar esta pregunta como opinión principal.
Máté Juhász
3
Vale la pena señalar que el límite máximo de la columna ha sido 16,384 desde al menos Excel 2007
Steven M. Vascellaro

Respuestas:

34

El significado de 16,384 es que puede tener valores de índice de columna interna de 0 a 16383. Veamos lo que 16383 está en binario:

0011 1111 1111 1111

Tiene 2 bits menos que una palabra de 16 bits. Es probable que 1 bit sea una bandera absoluta / relativa, que deja 1 bit para algún otro propósito, y todo se empaqueta perfectamente en una sola palabra.

Los números de fila son similares: un valor de índice máximo de 1,048,575 es este:

0000 0000 0000 1111 1111 1111 1111 1111

Para mí, como programador, parece que se está utilizando una palabra de 32 bits, con los 20 bits inferiores como el índice de fila y los 12 bits superiores utilizados para otra cosa.

David
fuente
1
Esto tiene mas sentido para mi
Ooker
9
1,048,576 es la primera potencia de 2 que es más de un millón ... así que ahora puedes tener "más de un millón de columnas"
HorusKol
6
y 16384 es la primera potencia de 2 que es más de diez mil. Así que esa puede ser la razón por la que el OP está buscando.
ris8_allo_zen0
56

16,384 es 2 ^ 14.

Al mismo tiempo que las columnas se expandieron a 16,384, las filas se expandieron a más de un millón, es decir, 1,048,576.

Estos números se refieren a dos a la potencia de 14 (2 ^ 14) y dos a la potencia de 20 (2 ^ 20), respectivamente, por lo que son progresiones naturales (lógicas) en la escala de unidades de memoria de computadora que inicialmente se estructuraron en bytes .

A medida que aumentaba la memoria de la computadora, era posible cargar y evaluar un mayor número de filas y columnas en la memoria para los cálculos, por lo que la cuadrícula de Excel podría crecer a partir de las limitaciones de las versiones anteriores.

Estos números máximos para filas y columnas han sido seleccionados por las personas que diseñan cómo funciona Excel, por supuesto, y se han hecho posibles con la creciente memoria de la computadora. Podrían haber elegido diferentes números, pero el número de filas y columnas en Excel desde la versión 2007 tiene su raíz en el poder de 2.

teylyn
fuente
2
Claro, pero ¿por qué no 2 ^ 16 y 2 ^ 32 (por lo tanto, un byte y una palabra)?
Ajasja
12
@Ajasja Deberá preguntarle al equipo de desarrollo de Excel sobre eso. Dije que podrían haber elegido diferentes números en mi respuesta. Solo expliqué de dónde viene el patrón, no por qué se eligió una cierta magnitud del patrón.
teylyn
14
En realidad, como Microsoft MVP de Excel, está en una posición mucho mejor para hacerle esta pregunta al equipo de desarrollo de Excel, por ejemplo, yo mismo :) Todavía es un +1.
Ajasja
5
Nota: la mayoría de los códigos de Excel se refieren a la representación interna en fórmulas: 2 ^ 16 no es práctico para un entero de 16 bits: Excel necesita almacenar también la posición relativa, por lo tanto, ambos son números positivos y negativos. Posiblemente uno de los bits se utiliza como indicador (único / intervalo), por lo que el número total de columnas se adaptó
Giacomo Catenazzi
1
@GiacomoCatenazzi El posicionamiento relativo funcionaría bien sin un bit de signo dedicado si solo considera que cualquier número que lo lleve más allá de la última columna sea negativo.
Random832