Parcourir la source

Add bitpop16() in util.c.

tmk il y a 12 ans
Parent
commit
94b4fba6e6
2 fichiers modifiés avec 11 ajouts et 2 suppressions
  1. 9 1
      common/util.c
  2. 2 1
      common/util.h

+ 9 - 1
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)
 {

+ 2 - 1
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