То, что вы хотите, это растровое изображение (или битовый массив , как его называет Википедия).
И не существует такого понятия, как short short int
, это просто char
, которыйявляется наименьшим целочисленным классом хранения в C.
При использовании этого подхода могут быть некоторые потери производительности, но не из-за неявного приведения к целочисленным значениям, а из-за того, что манипулирование растровым изображением более сложное, чем непосредственное манипулирование элементами массива.
Небольшой пример может помочь проиллюстрировать:
Использование обычной целочисленной матрицы:
int mat[8*8]; // assuming row major order
int is_element_set(int x, int y) {
return mat[y*8 + x];
}
С битовой картой:
unsigned char mat[8]; // assuming CHAR_BIT == 8
int is_element_set(int x, int y) {
return mat[y] & (1 << x);
}