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

3 Ansichten (letzte 30 Tage)
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.

Antworten (1)

Les Beckham
Les Beckham am 8 Feb. 2020
I think you may be looking for log2. Documentation available here: https://www.mathworks.com/help/matlab/ref/log2.html
  3 Kommentare
Ali Hamid
Ali Hamid am 9 Feb. 2020
So after we have the floor(log2(value)), is there a way to output the remainder?
Walter Roberson
Walter Roberson am 9 Feb. 2020
closest_power2 = 2.^floor(log2(value));
value = value - closest_power2.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Data Type Conversion finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by