ffs.c
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:0k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. /* $OpenBSD: ffs.c,v 1.7 2005/08/08 08:05:37 espie Exp $ */
  2. /*
  3.  * Public domain.
  4.  * Written by Dale Rahn.
  5.  */
  6. /*
  7.  * ffs -- vax ffs instruction
  8.  */
  9. int
  10. _ffs(int mask)
  11. {
  12. int bit;
  13. unsigned int r = mask;
  14. static const signed char t[16] = {
  15. -28, 1, 2, 1,
  16.   3, 1, 2, 1,
  17.   4, 1, 2, 1,
  18.   3, 1, 2, 1
  19. };
  20. bit = 0;
  21. if (!(r & 0xffff)) {
  22. bit += 16;
  23. r >>= 16;
  24. }
  25. if (!(r & 0xff)) {
  26. bit += 8;
  27. r >>= 8;
  28. }
  29. if (!(r & 0xf)) {
  30. bit += 4;
  31. r >>= 4;
  32. }
  33. return (bit + t[ r & 0xf ]);
  34. }