X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Flog2.c;h=08b27bcf8dc95aedfe70f17a1bdc45c3c8b045dc;hb=88200dc6daeeab5e7f402cefbd90ae1f126f8d7a;hp=dc0a92975fa750f4edad78ae08db5d5403b4f137;hpb=03846211ba84582b133a985200502a39462dfe66;p=libucw.git diff --git a/lib/log2.c b/lib/log2.c index dc0a9297..08b27bcf 100644 --- a/lib/log2.c +++ b/lib/log2.c @@ -1,26 +1,27 @@ /* * Sherlock Library -- Binary Logarithm * - * (c) 1997 Martin Mares, + * (c) 1997 Martin Mares + * + * This software may be freely distributed and used according to the terms + * of the GNU Lesser General Public License. */ -#include - -#include "lib.h" +#include "lib/lib.h" int -ffs(ulg x) +fls(u32 x) { - ulg l; + uns l; if (!x) return 0; l = 0; - if (x & 0xffff0000) l += 16; - if (x & 0xff00ff00) l += 8; - if (x & 0xf0f0f0f0) l += 4; - if (x & 0xcccccccc) l += 2; + if (x & 0xffff0000) { l += 16; x &= 0xffff0000; } + if (x & 0xff00ff00) { l += 8; x &= 0xff00ff00; } + if (x & 0xf0f0f0f0) { l += 4; x &= 0xf0f0f0f0; } + if (x & 0xcccccccc) { l += 2; x &= 0xcccccccc; } if (x & 0xaaaaaaaa) l++; return l; }