@@ -22,7 +22,7 @@ uint8_t bitpop(uint8_t bits) | |||
{ | |||
uint8_t c; | |||
for (c = 0; bits; c++) | |||
bits &= bits -1; | |||
bits &= bits - 1; | |||
return c; | |||
/* | |||
const uint8_t bit_count[] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 }; | |||
@@ -30,6 +30,14 @@ uint8_t bitpop(uint8_t bits) | |||
*/ | |||
} | |||
uint8_t bitpop16(uint16_t bits) | |||
{ | |||
uint8_t c; | |||
for (c = 0; bits; c++) | |||
bits &= bits - 1; | |||
return c; | |||
} | |||
// most significant on-bit - return highest location of on-bit | |||
uint8_t biton(uint8_t bits) | |||
{ |
@@ -16,7 +16,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
*/ | |||
#ifndef UTIL_H | |||
#define UTIL_H 1 | |||
#define UTIL_H | |||
#include <stdint.h> | |||
@@ -29,6 +29,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
uint8_t bitpop(uint8_t bits); | |||
uint8_t bitpop16(uint16_t bits); | |||
uint8_t biton(uint8_t bits); | |||
#endif |