diff options
author | tmk <nobody@nowhere> | 2012-06-07 02:25:15 +0900 |
---|---|---|
committer | tmk <nobody@nowhere> | 2012-06-07 02:47:33 +0900 |
commit | f4125707399d11a7d80587659c464b9bcddb8c56 (patch) | |
tree | 1d2a02e30f8cd103e8f4dc36629c09f6a3d44fef /common/util.c | |
parent | 225de7a847a511d004bf909b1334e19497cf2f9d (diff) |
Moved files to common, protocol and doc directory
Diffstat (limited to 'common/util.c')
-rw-r--r-- | common/util.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/common/util.c b/common/util.c new file mode 100644 index 0000000000..36afdd4470 --- /dev/null +++ b/common/util.c @@ -0,0 +1,37 @@ +/* +Copyright 2011 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include "util.h" + +// bit population +int bitpop(uint8_t bits) +{ + int c; + for (c = 0; bits; c++) + bits &= bits -1; + return c; +} + +// most significant on-bit +int biton(uint8_t bits) +{ + int n = 0; + if (bits >> 4) { bits >>= 4; n += 4;} + if (bits >> 2) { bits >>= 2; n += 2;} + if (bits >> 1) { bits >>= 1; n += 1;} + return n; +} |