Calculando bits de RAM

6

Considere que tenho uma RAM de 30 bits para calcular seu tamanho: 2 ^ 30 = 1073741824/10 ^ 9 = 1GB

E se eu tivesse, por exemplo, 512 MB de RAM, existe uma fórmula para convertê-lo em n-bit ? isso pode ser noob pergunta, mas eu não sou bom com matemática: /

    
por user 26.06.2016 / 23:19

2 respostas

18

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.

    
por 26.06.2016 / 23:38
4

Além do que Ben disse, eu recomendo primeiro fazer o logaritmo do seu número sem unidades

log₂512 = 9

E, em seguida, levar as unidades em consideração: soma 10 para os kibibytes, 20 para os mebibytes, 30 para os gibibytes, ...

9 + 20 = 29

E é isso. Não há necessidade de calcular números enormes. Isso porque os logaritmos têm as seguintes propriedades:

logₙ(a × b) = logₙ(a) +  logₙ(b)
logₙ(aᵇ) = b × logₙ(a)

Portanto,

log₂(512 × 2²⁰) = log₂(512) + 20

No entanto, se você já conhece log₂(1 GiB) = 30 ,

log₂(512 MiB) = log₂(1 GiB / 2) = log₂(1 GiB) - log₂(2) = 30 - 1 = 29
    
por 27.06.2016 / 01:57