Теоретически элемент {0, 1} должен потреблять не более 1 бита на ячейку.Это означает, что 8 ячеек на байт или 1192092895 мегабайт, или около один петабайт , что слишком много, если вы не гуглите :) Не говоря уже о том, что даже обработка (или сохранение) такой матрицы займет слишком много времени (окологод я бы сказал).
Вы сказали, что во многих случаях вам даже не понадобится такая большая матрица.Таким образом, вы можете создать меньшую матрицу в начале (10 000 x 10 000), а затем удваивать размер каждый раз, когда требуется увеличение, копируя старое содержимое.
Если ваша матрица является разреженной (имеет очень многобольше 1, чем 0 или наоборот), тогда гораздо эффективнее хранить только координаты, где те находятся в некоторой эффективной структуре данных, в зависимости от того, какие операции (поиск, доступ к данным) вам нужны.
Примечание:Во многих языках вы должны позаботиться о том, чтобы это было правдой, например, в C, даже если вы указываете переменную как логическое значение, она по-прежнему занимает один байт, в 8 раз больше, чем необходимо.