# find position of most significant bit ?

**Karl Hasselström
**
kha@treskal.com

*Wed, 27 Nov 2002 09:51:17 +0100*

On 2002-11-26 16:25:18 -0500, David T. Ashley wrote:
>*
*>* I assume one knows from the data structure of an arbitrary integer
*>* where the limb containing the most significant bit is.
*
Yes. If A is an mpz_t, then A->_mp_d[ABS(A->_mp_size) - 1] is the most
significant limb, since ABS(A->_mp_size) is the number of limbs and
the most significant limb is always nonzero. I'm not exactly sure what
happens when A is zero, but I think that ABS(A->_mp_size) is zero
then, so there are no limbs. (Someone correct me if I'm wrong!)
>* Then the problem reduces to the problem of finding the most
*>* significant within a limb (a machine word).
*
In longlong.h there is a macro called count_leading_zeros that does
this.
--
Kalle Hasselström, kha@treskal.com
www.treskal.com/kalle