Ruby
1.9.3p551(2014-11-13revision48407)
Main Page
Modules
Data Structures
Files
File List
Globals
missing
ffs.c
Go to the documentation of this file.
1
/* ffs.c - find first set bit */
2
/* ffs() is defined by Single Unix Specification. */
3
4
#include "ruby.h"
5
6
int
ffs
(
int
arg
)
7
{
8
unsigned
int
x = (
unsigned
int
)arg;
9
int
r
;
10
11
if
(x == 0)
12
return
0;
13
14
r = 1;
15
16
#if 32 < SIZEOF_INT * CHAR_BIT
17
if
((x & 0xffffffff) == 0) {
18
x >>= 32;
19
r += 32;
20
}
21
#endif
22
23
if
((x & 0xffff) == 0) {
24
x >>= 16;
25
r += 16;
26
}
27
28
if
((x & 0xff) == 0) {
29
x >>= 8;
30
r += 8;
31
}
32
33
if
((x & 0xf) == 0) {
34
x >>= 4;
35
r += 4;
36
}
37
38
if
((x & 0x3) == 0) {
39
x >>= 2;
40
r += 2;
41
}
42
43
if
((x & 0x1) == 0) {
44
x >>= 1;
45
r += 1;
46
}
47
48
return
r
;
49
}
int
VP_EXPORT int
Definition:
bigdecimal.c:4911
r
r
Definition:
bigdecimal.c:1154
arg
arg
Definition:
ripper.y:1287
ffs
RUBY_EXTERN int ffs(int)
Definition:
ffs.c:6
Generated by
1.8.5