Какое значение имеет количество столбцов (16384) в MS Excel 2016?

29

Я только что заметил, что количество столбцов MS Excel увеличилось с ZZдо XFD16384 столбцов. Каково значение этой конкретной ценности? Почему MS не пошел дальше, до ZZZ? Почему они остановились на XFD?

Karth
источник
1
Не совсем ответ на ваш вопрос, но MS перечисляет различные ограничения Excel здесь - support.office.com/en-us/article/…
матрица
2
Это произвольное дизайнерское решение, чтобы держать сложность в четко определенных рамках. Технически, единственным ограничением являются доступные ресурсы (память, процессор).
Даниэль Б
8
Как объяснила @teylyn в своем ответе, степени 2 являются обычным выбором в информатике, однако, точно, почему MS выбрала это значение, вероятно, здесь невозможно ответить, поэтому я голосую, чтобы закрыть этот вопрос как основанный на первичном мнении.
Матэ Юхас
Также есть stackoverflow.com/questions/526921/… и quora.com/…
Аяся
3
Стоит отметить, что максимальный предел столбца был 16 384, по крайней мере, Excel 2007
Stevoisiak

Ответы:

34

Значение 16384 состоит в том, что вы можете иметь внутренние значения индекса столбца от 0 до 16383. Давайте посмотрим, что такое 16383 в двоичном виде:

0011 1111 1111 1111

Это на 2 бита меньше 16-битного слова. 1 бит, вероятно, будет абсолютным / относительным флагом, который оставляет 1 бит для какой-то другой цели, и все это аккуратно упаковано в одно слово.

Номера строк одинаковы: максимальное значение индекса 1 048 575:

0000 0000 0000 1111 1111 1111 1111 1111

Мне, как программисту, похоже, что используется 32-битное слово, причем нижние 20 битов служат индексом строки, а верхние 12 битов используются для чего-то еще.

Дэвид
источник
1
Это имеет больше смысла для меня
Ooker
9
1 048 576 - это первая степень 2, которая больше миллиона ... так что теперь вы можете иметь «более миллиона столбцов»
HorusKol
6
и 16384 - это первая степень 2, которая превышает десять тысяч. Так что это может быть причиной, по которой ОП ищет.
ris8_allo_zen0
56

16 384 - это 2 ^ 14.

В то же время, когда столбцы были расширены до 16 384, строки были расширены до более миллиона, то есть 1 048 576.

Эти числа относятся к двум к степени 14 (2 ^ 14) и двум к степени 20 (2 ^ 20) соответственно, так же как и естественные (логические) прогрессии в масштабе блоков памяти компьютера, которые изначально были структурированы в байтах ,

По мере увеличения памяти компьютера стало возможным загружать и оценивать большее количество строк и столбцов в памяти для вычислений, поэтому сетка Excel могла вырасти из-за ограничений более ранних версий.

Эти максимальные числа для строк и столбцов были выбраны людьми, которые разрабатывают, как работает Excel, и стали возможными с ростом компьютерной памяти. Они могли бы выбрать разные числа, но количество строк и столбцов в Excel начиная с версии 2007 коренится в степени 2.

teylyn
источник
2
Конечно, но почему бы не 2 ^ 16 и 2 ^ 32 (так, байт и слово)?
Аяся
12
@Ajasja Вам нужно будет спросить об этом команду разработчиков Excel. Я сказал, что они могли выбрать разные цифры в моем ответе. Я только объяснил, откуда взялась модель, а не почему была выбрана определенная величина модели.
Тейлин
14
На самом деле, как Microsoft Excel MVP, вы гораздо лучше задаете этот вопрос команде разработчиков Excel, например, я сам :) Все еще +1.
Аяся
5
Примечание: большая часть кода Excel относится к внутреннему представлению в формулах: 2 ^ 16 нецелесообразно для 16-разрядного целого числа: Excel должен хранить также относительное позиционирование, поэтому как отрицательные, так и положительные числа. Возможно, один из битов используется как флаг (одиночный / интервал), поэтому было адаптировано общее количество столбцов
Джакомо
1
@GiacomoCatenazzi Относительное позиционирование будет работать нормально без выделенного знакового бита, если вы просто сочтете любое число, которое уведет вас за последний столбец, отрицательным.
Random832