пример:
в abc [2] мы находим 3-й бит, как установлено, тогда фактическое число битов будет 8 * 2 + 3, то есть установлен 19-й бит !!! вот так.
Вы можете сделать простую проверку битов:
abc[i] & (1 << n)
это будет 0, если бит не установлен, и (1 << n), если он установлен
0
(1 << n)
При использовании GCC вы можете закрепить свой битовый поиск, используя
Если выЕсли вы не желаете использовать какое-либо расширение, ориентированное на GCC, и не хотите анализировать ваш массив как uint32_t, вы все равно можете использовать функцию ffs () , чтобы найти первый бит (младший порядок), установленный вкаждый индекс массива, см. справочную страницу ffs () .
Это помогает?
int l = sizeof(abc); int k = sizeof(*abc); int i, j; for (i = 0; i < l; ++i) { char n = abc[i]; for (j = 0; j < k; ++j) { if (n & 0x01) printf("Bit number %d is set.\n", (l*k)-i); n = n >> 1; } }