/
nerfur
/
openbsd-src
Обзор
Документация
Войти
/
nerfur
/
openbsd-src
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
lib/libc/string/ffs.c
40 строк
516 B
guenther
Instead of trying to handle ffs() with the normal rename-mark-hidden-and-alias
18 янв 2018, 11:23
18 янв 2018, 11:23
ae3cb40
Код
Авторство
О чём код?
/* $OpenBSD: ffs.c,v 1.10 2018/01/18 08:23:44 guenther Exp $ */ /* * Public domain. * Written by Dale Rahn. */ #include <string.h> /* * ffs -- vax ffs instruction */ int ffs(int mask) { int bit; unsigned int r = mask; static const signed char t[16] = { -28, 1, 2, 1, 3, 1, 2, 1, 4, 1, 2, 1, 3, 1, 2, 1 }; bit = 0; if (!(r & 0xffff)) { bit += 16; r >>= 16; } if (!(r & 0xff)) { bit += 8; r >>= 8; } if (!(r & 0xf)) { bit += 4; r >>= 4; } return (bit + t[ r & 0xf ]); }