diff options
| -rw-r--r-- | common/util.c | 10 | ||||
| -rw-r--r-- | common/util.h | 3 | 
2 files changed, 11 insertions, 2 deletions
diff --git a/common/util.c b/common/util.c index 644301fe8..9d8fb9321 100644 --- a/common/util.c +++ b/common/util.c @@ -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)  { diff --git a/common/util.h b/common/util.h index 87636c971..c3734487f 100644 --- a/common/util.h +++ b/common/util.h @@ -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  | 
