# How do I find maximum value of n so that 2^n is less than a value (ex, 500?)

6 views (last 30 days)
Ali Hamid on 8 Feb 2020
Commented: Walter Roberson on 9 Feb 2020
I am working on making binary code using the power method. So what I am looking to do is make a function where I input a base 10 value and find the binary translation of this value. This will be done by calculating the largest value of 2^n that is smaller than or equall to the input. n will then be the number of rows in the matrix(only for this first instance). From there it will subtract this 2^n value from the input and repeat. The matrix will input going down from the largest n value to fill in the binary code, filling in 1s for when 2 to that n value exists and 0s for when it does not. These are based on calcualtions.
Anyway I am stuck on how to do this for finding max n values that are less than input value, any ideas? From here I feel comfortable creating loops to output binary code.

Les Beckham on 8 Feb 2020
I think you may be looking for log2. Documentation available here: https://www.mathworks.com/help/matlab/ref/log2.html
Walter Roberson on 9 Feb 2020
closest_power2 = 2.^floor(log2(value));
value = value - closest_power2.