home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (c) 1986, Greg McGary */
- static char sccsid[] = "@(#)bitcount.c 1.1 86/10/09";
-
- int bitCount();
- int bitsCount();
-
- /*
- Count the number of 1 bits in the given integer.
- */
- static char bitcnt[] = {
- /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
- 0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4
- };
- int
- bitCount(mask)
- register unsigned mask;
- {
- register int nybbles = 8;
- register int cnt = 0;
-
- while (mask && nybbles--) {
- cnt += bitcnt[mask&0xf];
- mask >>= 4;
- }
- return cnt;
- }
-
- int
- bitsCount(bitv, n)
- register char *bitv;
- register int n;
- {
- register int count = 0;
-
- while (n--) {
- count += bitcnt[*bitv&0xf] + bitcnt[(*bitv>>4)&0xf];
- bitv++;
- }
- }
-