lowdisc_bithi1 — Returns the position of the high one bit base 2 in an integer.
bit = lowdisc_bithi1 ( n ) Parameters: n : a 1 x 1 matrix of floating point integers, the integer to be measured. n should be nonnegative. If n is nonpositive, the value will always be 0. bit : a 1 x 1 matrix of floating point integers, the high 1 bit in the base 2 expansion of n
This routine is not vectorized, i.e. it does not take a column matrix n as input argument, but only a 1 x 1 matrix.
// n = 22 writes [1 0 1 1 0]' in base 2 lowdisc_bary(22)' // Hence, the high 1 bit is 5, // i.e. the highest 1 bit is at index 5. lowdisc_bithi1 ( 22 ) // Compute the high 1 bit for several integers mprintf("%5s %25s %5s\n","N","Binary","bit"); mprintf("-------------------------------------\n"); nmat = [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1023 1024 1025]; for n = nmat bit = lowdisc_bithi1 ( n ); d = lowdisc_bary ( n , 2 ); mprintf("%5d %25s %5d\n",n,strcat(string(d)," "),bit); end Author: 2008-2009 - INRIA - Michael Baudin (Scilab version) 2010 - Digiteo - Michael Baudin