From f4125707399d11a7d80587659c464b9bcddb8c56 Mon Sep 17 00:00:00 2001 From: tmk Date: Thu, 7 Jun 2012 02:25:15 +0900 Subject: Moved files to common, protocol and doc directory --- common/util.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 common/util.c (limited to 'common/util.c') 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 + +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 . +*/ + +#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; +} -- cgit v1.2.3