c++ - Efficient least significant set bit of "biginteger" class -


i'm writing boardgame engine , wrote 10x10 bitboard class. class holds array of 2 uint64's , implements various bit operations. important operation didn't implement yet lsb(). know can lsb() on first integer , if it's 0 on second. however, checking if it's 0 seems redundant. efficient way implement lsb()?

edit: current code is:

char s = lsb64(b_[0]); if (s == 0 && b_[1] != 0) {     s = lsb64(b_[1]) + 64; } return s; 

lsb64() here returns 1 + index of bit

are there performance improvements make? note if condition false.

if expect inputs have bit set in lower 64 bits, have profile execution. following avoids 2 lsb64 calls.

return b_[0] ? lsb64(b_[0]) : (b_[1] ? 64 + lsb64(b_[1]) : 0); 

possible solutions lsb64 can found in related question.


Comments

Popular posts from this blog

c# - Binding a comma separated list to a List<int> in asp.net web api -

Delphi 7 and decode UTF-8 base64 -

html - Is there any way to exclude a single element from the style? (Bootstrap) -