Base code for dtplug : Core, drivers, lib and some external drivers.
[dtplug] / lib / bit_arithm.c
1 /*
2  *   lib/bit_arithm.c
3  * 
4  * bit arithmetic helper functions
5  *
6  * Copyright (C) 2013 Freie Universität Berlin
7  *
8  * This file subject to the terms and conditions of the GNU Lesser General
9  * Public License. See the file LICENSE in the top level directory for more
10  * details.
11  *
12  * Code from RIOT OS : http://www.riot-os.org
13  * Author : Kaspar Schleiser <kaspar.schleiser@fu-berlin.de>
14  *
15  */
17 #include <stdint.h>
19 /* Note : Kept only functions for which no instructions are available */
22 uint32_t number_of_bits_set(uint32_t v)
23 {
24         uint32_t c; /* c accumulates the total bits set in v */
26         for (c = 0; v; c++) {
27                 v &= v - 1; /* clear the least significant bit set */
28         }
30         return c;
31 }