codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
/// direct method for 32-bit using bsf unsigned rbN2 (unsigned arg) { __asm { xor eax, eax // eax := 0 mov ebx, arg // ebx := arg NEXTBIT: // loop begin bsf ecx, ebx // ecx := bit_search_forward (ebx), if ebx ... jz EXIT // ... == 0 then exit mov edx, 1 // edx := 1 shl edx, cl // edx <<= (char)ecx xor ebx, edx // ebx ^= edx // reset this bit in argument neg ecx // ecx := -ecx add ecx, 31 // ecx += 31 // doing cl = 31 - cl mov edx, 1 // edx := 1 shl edx, cl // edx <<= (char)ecx or eax, edx // eax |= edx // set reversed bit in result jmp NEXTBIT // next iteration EXIT: } // return eax }
Private
[
?
]
Run code
Submit