```/**
* Dirk Bosman's fully unraveled binary search method.
* Calculate how many bits wide a number is,
* i.e. position of highest 1 bit.
* @return p where 2**p is first power of two >= n.
* e.g. binary 0001_0101 -> 5, 0xffffffff -> 32,
* 0 -> 0, 1 -> 1, 2 -> 2, 3 -> 2, 4 -> 3
*/
public static final int widthInBits ( int n )
{
switch ( n )
{
case Integer.MIN_VALUE .. -1 : return 32 ;
case 0: return 0;
case 1: return 1;
case 0x2 .. 0x3: return 2;
case 0x4 .. 0x7: return 3;
case 0x8 .. 0xf: return 4;
case 0x10 .. 0x1f: return 5;
case 0x20 .. 0x3f: return 6;
case 0x40 .. 0x7f: return 7;
case 0x80 .. 0xff: return 8;
case 0x100 .. 0x1ff: return 9;
case 0x200 .. 0x3ff: return 10;
case 0x400 .. 0x7ff: return 11;
case 0x800 .. 0xfff: return 12;
case 0x1000 .. 0x1fff: return 13;
case 0x2000 .. 0x3fff: return 14;
case 0x4000 .. 0x7fff: return 15;
case 0x8000 .. 0xffff: return 16;
case 0x10000 .. 0x1ffff: return 17;
case 0x20000 .. 0x3ffff: return 18;
case 0x40000 .. 0x7ffff: return 19;
case 0x80000 .. 0xfffff: return 20;
case 0x100000 .. 0x1fffff: return 21;
case 0x200000 .. 0x3fffff: return 22;
case 0x400000 .. 0x7fffff: return 23;
case 0x800000 .. 0xffffff: return 24;
case 0x1000000 .. 0x1ffffff : return 25 ;
case 0x2000000 .. 0x3ffffff : return 26 ;
case 0x4000000 .. 0x7ffffff : return 27 ;
case 0x8000000 .. 0xfffffff : return 28 ;
case 0x10000000 .. 0x1fffffff : return 29 ;
case 0x20000000 .. 0x3fffffff : return 30 ;
case 0x40000000 .. 0x7fffffff : return 31 ;
}
}```