010
05.07.2004, 13:50 Uhr
0xdeadbeef
Gott (Operator)
|
Hm.
C++: |
unsigned f(unsigned x) { unsigned count = 0, pos = 0, max_pos = 0; for(; pos < sizeof(unsigned) * 8; ++pos) if(x >> pos & 1) { max_pos = pos; ++count; } return max_pos - (count == 1) + 1; }
|
oder auch:
C++: |
unsigned f(unsigned x) { unsigned count = 0, pos = 0, max_pos = 0, tmp = x; for(; tmp && pos < sizeof(unsigned) * 8; ++pos) if((tmp = x >> pos) & 1) { max_pos = pos; ++count; } return max_pos - (count == 1) + 1; }
|
Ich hab grad keinen bench drüber laufen lassen. Was soll eigentlich bei der Eingabe 0 rauskommen? -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 05.07.2004 um 13:54 Uhr von 0xdeadbeef editiert. |