Прежде всего , ваши массивы внешнее измерение ваших массивов составляет [1]:
int ALPHA[1][8] = ...
int ALPHA_NEW[1][8] = ...
т.е. только допустимые индексы [0]. Но вы перебираете от 0 до 7
for(int i = 0; i< 8; i++)
...
for(int k = 0; k<8; k++)
ALPHA_NEW[k][j] = ALPHA[i][k];
При доступе к массивам за их пределами содержимое памяти может быть повреждено и может вызвать непреднамеренное поведение.
Второй . Если вам нужен одномерный массив 8-разрядных целых чисел без знака, то почему бы не определить его таким образом?
uint8_t ALPHA[8] = { .... }
Третий . Это не ясно из вашего вопроса, но, как я предполагаю из содержимого массива, у вас есть изображение размером 8 x 8 пикселей, которое содержится в виде битовой карты в 8 последовательных элементах массива. Вам нужен еще один массив из 8 элементов, в котором одно и то же изображение будет вращаться по часовой стрелке или против часовой стрелки.
Для этого вам необходимо скопировать в первый элемент новых значений массива все первые (или последние) биты исходного массива. Во втором пункте - все вторые (или 7-е) биты и т. Д. 8 раз. Порядок следования битов зависит от того, в каком направлении вы поворачиваете изображение и как оно сохраняется.
Давайте предположим, что элементы массива хранят горизонтальные строки пикселей, сверху вниз, самый старший бит представляет самый левый пиксель.
// Array containing the source 8x8 bit-mapped monochrome image
uint8_t source_img[8] = {0b00111100,0b01000010,0b11000011,0b11111111,0b11000011,0b11000011, 0b11000011, 0b11000011};
// Array to store rotated imaged
uint8_t dest_img[8];
if (counterclockwise) {
for (uint8_t y = 0 ; y < 8 ; y++) {
uint8_t mask = (1 << y); // mask of a bit to pick from source array;
uint8_t buf = 0; // buffer of one row bits in the destination array
for (uint8_t x = 0 ; x < 8 ; x++) {
buf <<= 1; // shift bits one position left
if (source_img[x] & mask) { // if masked bit in source array is set,
buf |= 1; // set the rightmost bit in the buffer
}
}
dest_img[y] = buf;
}
} else if (clockwise) {
for (uint8_t y = 0 ; y < 8 ; y++) {
uint8_t mask = (0x80 >> y); // mask of a bit to pick from source array;
uint8_t buf = 0; // buffer of one row bits in the destination array
for (uint8_t x = 0 ; x < 8 ; x++) {
buf >>= 1; // shift bits one position right
if (source_img[x] & mask) { // if masked bit in source array is set,
buf |= 0x80; // set the leftmost bit in the buffer
}
}
dest_img[y] = buf;
}
}
после этого dest_img будет содержать повернутое растровое изображение буквы 8x8