Você está procurando um logaritmo , um logaritmo de base dois especificamente. Logaritmos fazem o oposto da exponenciação, então se b x = y, então x = log b y. 2 4 = 16, então registre 2 16 = 4.
Primeiro, você precisa descobrir quantos bytes você tem. Se o seu número estiver em kilobytes, multiplique por 2 10 . Para megabytes, 2 20 , para gigabytes 2 30 , et cetera. Como você pode ver, estou usando as definições de potência de 1024 dessas unidades, em vez das definições de potências de 1000, portanto, um kilobyte aqui é de 1024 bytes. O nome não ambíguo para 1024 bytes é kibibyte . De qualquer forma, 512 MB é igual a 512 • 2 20 = 536870912 bytes.
Agora você precisará de uma calculadora científica. Eu gosto do Wolfram Alpha , que permite fazer logaritmos de base dois com a função log2
. log2(536870912)
produz 29, o que faz sentido, considerando que 512 MB é metade de 1 GB, então leva menos um poder de dois. Você pode usar praticamente qualquer operador imaginável em uma expressão da Wolfram Alpha, então log2(512 * 10^20)
funciona também .
Se você receber um número com uma parte decimal, faça um arredondamento. Por exemplo, você precisaria de três bits para endereçar cinco bytes de RAM, embora log2(5)
seja aproximadamente 2.32.