/* 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++; } }