If you're trying to avoid a loop and you care about speed, you can use a method like this:
int value = ...;
int count = 0;
if( value < 0 ) { value = 0; count = 32; }
if( value > 0x7FFF ) { value >>= 16; count += 16; }
if( value > 0x7F ) { value >>= 8; count += 8; }
if( value > 0x7 ) { value >>= 4; count += 4; }
if( value > 0x3 ) { value >>= 2; count += 2; }
if( value > 0x1 ) { value >>= 1; count += 1; }
Java doesn't have unsigned integers, so that first if( value < 0 ) is a little questionable. Negative numbers always set the most significant bit, so arguably require the full word to to represent them. Adapt that behavior if you care.
Incidentally, to handle a 64-bit integer, replace the if( value < 0 ) line with these two:
if( value < 0 ) { value = 0; count = 64; }
if( value > 0x7FFFFFFF ) { value >>= 32; count += 32; }