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

4 visualizaciones (últimos 30 días)
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.

Respuestas (1)

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

Iniciar sesión para comentar.

Categorías

Más información sobre Data Type Conversion en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by