Мне нужно создать большой массив целых чисел в фортране, который содержит только 1 и -1. Может ли кто-нибудь предложить мне, как определить такой массив, который занимает минимально возможное пространство памяти?
Спасибо
Мне нужно создать большой массив целых чисел в фортране, который содержит только 1 и -1. Может ли кто-нибудь предложить мне, как определить такой массив, который занимает минимально возможное пространство памяти?
Спасибо
Простой подход:
use ISO_FORTRAN_ENV
integer (INT8), dimension (N) :: array
Это даст вам целые числа размером в байт. (Если компилятор на самом деле не решит реализовать их с большими целыми числами, что кажется неправдоподобным, но, вероятно, разрешено.)
Если массив действительно огромен и не помещается в хранилище, вы можете получить доступ к битам внутри переменных, но это не будет простым массивом.
Если вы преобразуете все свои -1 в 0, вам понадобится только один бит на член вашего массива. Имея такой преобразованный массив, который содержит только 1 и 0, несложно упаковать его в 32-битные или любые целые числа любого размера.