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


29

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


1
Не совсем ответ на ваш вопрос, но MS перечисляет различные ограничения Excel здесь - support.office.com/en-us/article/…
— матрица

2
Это произвольное дизайнерское решение, чтобы держать сложность в четко определенных рамках. Технически, единственным ограничением являются доступные ресурсы (память, процессор).
— Даниэль Б

8
Как объяснила @teylyn в своем ответе, степени 2 являются обычным выбором в информатике, однако, точно, почему MS выбрала это значение, вероятно, здесь невозможно ответить, поэтому я голосую, чтобы закрыть этот вопрос как основанный на первичном мнении.
— Матэ Юхас


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.


2
Конечно, но почему бы не 2 ^ 16 и 2 ^ 32 (так, байт и слово)?
— Аяся

12
@Ajasja Вам нужно будет спросить об этом команду разработчиков Excel. Я сказал, что они могли выбрать разные цифры в моем ответе. Я только объяснил, откуда взялась модель, а не почему была выбрана определенная величина модели.
— Тейлин

14
На самом деле, как Microsoft Excel MVP, вы гораздо лучше задаете этот вопрос команде разработчиков Excel, например, я сам :) Все еще +1.
— Аяся

5
Примечание: большая часть кода Excel относится к внутреннему представлению в формулах: 2 ^ 16 нецелесообразно для 16-разрядного целого числа: Excel должен хранить также относительное позиционирование, поэтому как отрицательные, так и положительные числа. Возможно, один из битов используется как флаг (одиночный / интервал), поэтому было адаптировано общее количество столбцов
— Джакомо

1
@GiacomoCatenazzi Относительное позиционирование будет работать нормально без выделенного знакового бита, если вы просто сочтете любое число, которое уведет вас за последний столбец, отрицательным.
— Random832
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.