Strange algorithm results
Consider this case:

A: 1111111111
B: 1111111111
Query: n+1


The other post terminates very quckly. It knows that since both numbers end in 1, it must carry and thus doesn't have to scan throughout the entire string. On the other hand, your method tries to find clear bits but since there aren't any, it ends up going through the whole bitstring.

Probably, yours is faster over all, but this pathological case happens to have been put first in the test cases and so your program fails.

                if(carry &amp;&amp; a.get(iter) &amp;&amp; b.get(iter))
                {
                    carry = true;
                    value = 1;
                }
                else if((carry &amp;&amp; a.get(iter)) || (carry &amp;&amp; b.get(iter))  || (a.get(iter) &amp;&amp; b.get(iter)))
                {
                    carry = true;   
                    value = 0;
                }
                else if(carry || a.get(iter) || b.get(iter))
                {
                    carry = false;
                    value = 1;
                }
                else
                {
                    carry = false;      
                    value = 0;
                }


This whole bit kinda hard to follow you could instead do something like:

int bits = a.get(iter) ? 1 : 0 + b.get(iter) ? 1 : 0 + carry ? 1 : 0;
value = bits % 2;
carry = bits / 2;


I think its a clearer

                int a_index = a.nextClearBit(number_bits - index);
                int b_index = b.nextClearBit(number_bits - index);


Yeah, not gonna fly. nextClearBit has to scan through the bitset bit by bit in order to do that. You are gonna need to come up with a way to look through the bits without looking at each individual bit. I've solved this problem, and I used a specialized data structure to do it.