Cookies para estatística e publicidade
Usamos cookies de estatística e de publicidade, ambos enviados ao Google. Recusar não muda nada do que você vê.Ler a página de privacidade
1 GiB = 1073741824 B
Digite um valor e a conversão de gibibyte para byte se atualiza enquanto você escreve. O fator exibido é 1073741824: é isso que corresponde em B a 1 GiB. O cálculo é feito no seu próprio aparelho, e o valor digitado não é enviado para um servidor.
8 GiB is 8590000000 B
— a memória de um notebook intermediário.
931 GiB is 999700000000 B
— o que o Windows mostra para um disco de um terabyte.
0,004657 GiB is 5000000 B
— uma foto feita com o celular.
9,537e-7 GiB is 1024 B
— um kibibyte, que é onde a confusão começa.
| GiB | B |
|---|---|
| 1 | 1073741824 |
| 2 | 2147483648 |
| 5 | 5368709120 |
| 10 | 10737418240 |
| 50 | 53687091200 |
| 100 | 107374182400 |
| 500 | 536870912000 |
| 1000 | 1073741824000 |
Converter GiB para B
Um gibibyte são 1.073.741.824 bytes, cerca de 7 % a mais que um gigabyte. O Windows mede em gibibytes mas rotula «GB», e é nisso que consiste todo o mistério do espaço que some.
Um byte são oito bits, o que nem sempre foi claro: os primeiros computadores usaram seis, sete ou nove. O oito se impôs porque nele cabe um caractere e porque o número se parte em metades limpas.
Neste sentido a conta é uma multiplicação, e por um número inteiro: um gibibyte são 1.073.741.824 bytes, exatamente, e 1.073.741.824 é a definição, não uma medição que chegou perto.
Isso faz dela uma das poucas conversões que valem de cabeça, e o resultado dá para conferir: divida de volta e você tem que cair no número de partida, exato e sem resto para explicar.
Um GiB são 1.024 da unidade de baixo; um GB, 1.000. Nesta página isso é a diferença entre 1073741824 B e 1000000000 B — 7,4 % — e a distância cresce a cada degrau: por isso é arredondamento desprezível numa foto e um pedaço visível de um HD.
O mistério do espaço que some é inteiro isso. Um disco vendido como um terabyte tem exatamente o que diz em unidades decimais; o Windows reconta em unidades binárias e mantém o nome decimal, então o número encolhe sem que nada tenha se perdido. O macOS conta em unidades decimais desde o 10.6, e é por isso que o mesmo disco pode aparecer com dois tamanhos em dois computadores.
Muitas configurações aceitam um número sem unidade, e a documentação diz bytes. Um tamanho de parte em armazenamento de objetos, um limite de corpo de requisição num framework, um buffer numa configuração de banco de dados, uma cota numa chamada de API: todos querem um inteiro, e o inteiro para um gibibyte são 1.073.741.824. Multiplique pela cifra em gibibytes e a resposta é exata, porque as duas unidades são contagens definidas e nada está sendo aproximado.
O motivo de recorrer à unidade binária em vez de um número decimal redondo é que o sistema ao redor quase certamente já é binário. Páginas de memória, tamanhos de bloco, alocações de buffer e faixas de endereço são potências de dois, e um limite de 1.000.000.000 bytes fica desalinhado entre duas delas.
A convenção nas ferramentas operacionais é que um k, m ou g simples significa 1.024, 1.048.576 ou 1.073.741.824. As flags de heap da JVM funcionam assim, então -Xmx4g reserva 4.294.967.296 bytes. Limites de memória e armazenamento do Docker funcionam assim. Também as diretivas de recurso do systemd e os valores de tamanho no nginx. Nenhum deles anuncia isso no próprio valor; a letra parece um prefixo do SI e se comporta como binário.
As GNU coreutils vão um passo além e aceitam as duas grafias, com uma regra fácil de dizer e fácil de esquecer: uma letra sozinha é binária e uma forma de duas letras terminando em B é decimal. dd bs=1G copia em blocos de 1.073.741.824 bytes e dd bs=1GB copia em blocos de 1.000.000.000. Os dois comandos parecem quase idênticos no histórico do shell e diferem em sete por cento em cada bloco que movem.
Quantidades de recurso no Kubernetes carregam a distinção na própria sintaxe. Um sufixo Gi é binário, então 1Gi são 1.073.741.824 bytes; um sufixo G sem i é decimal, então 1G são 1.000.000.000. O mesmo vale em toda escala — Ki contra k, Mi contra M, Ti contra T — e o manifesto significa precisamente o que diz.
Essa clareza tem uma aresta afiada. Um limite de memória escrito 4G em vez de 4Gi é 294.967.296 bytes menor, uma diferença de cerca de sete por cento e totalmente invisível numa revisão. Onde uma carga de trabalho fica perto do teto, essa única letra faltando é a diferença entre um pod que roda e um que é encerrado por exceder o limite num momento de pico.
Um punhado de contagens de byte aparece repetidamente em mensagens de erro e campos de limite, e conhecê-las economiza uma conversão. 1.048.576 é um mebibyte, 1.073.741.824 é um gibibyte, 2.147.483.648 são dois deles, e 4.294.967.296 são 2³² — o tamanho exato de um espaço de endereço de 32 bits.
Um a menos que essas cifras importa tanto quanto as próprias cifras. 2.147.483.647 é o maior inteiro assinado de 32 bits, e qualquer contagem de bytes carregada num deles para exatamente ali. Um arquivo que sobe até 1,9 GiB e falha em 2,1 geralmente está esbarrando nesse limite, não num limite configurado.
Falhas altas são o caso de sorte. Um contêiner que excede seu limite de memória é encerrado com um status reconhecível; um upload acima de um limite de tamanho de corpo é rejeitado com um código de status que nomeia o problema. Os dois apontam para a configuração que os causou.
As falhas silenciosas custam mais. Um heap dimensionado sete por cento acima do que o contêiner vai permitir não falha na inicialização — falha semanas depois, sob carga, quando o processo finalmente tenta usar a memória que disseram que ele tinha. Um limite de cache configurado na unidade errada nem dá erro; ele descarta com mais frequência que o pretendido.
Uma linha de configuração dizendo 8589934592 não conta nada sobre a intenção para quem revisa. O mesmo valor escrito como 8 1024 1024 * 1024 onde o formato permite uma expressão, ou anotado com um comentário dizendo oito gibibytes, é verificável de relance.
Onde a sintaxe permite um sufixo, prefira ele aos dígitos expandidos. Quase todo erro de digitação em 1Gi é um erro de sintaxe, e o único que não é — esquecer o i — custa sete por cento; um erro de digitação em 1073741824 é uma configuração funcional com um limite dez vezes grande ou pequeno demais.
Seja qual for o valor escrito, leia de volta o valor efetivo do próprio sistema em vez de confiar no arquivo. Runtimes de contêiner expõem o teto de memória que aplicaram, a JVM imprime suas configurações de heap resolvidas quando pedido, e a maioria dos servidores reporta a configuração interpretada.
Isso importa mais quando duas camadas impõem cada uma um limite numa unidade diferente. Um limite de processo escrito em gibibytes dentro de um contêiner cujo limite foi escrito em gigabytes decimais deixa uma lacuna de sete por cento que ninguém planejou, e o menor dos dois vence silenciosamente. Ler os dois de volta em bytes coloca-os na mesma escala.
1 GiB é 1073741824 B. A equivalência entre gibibyte e byte é fixa; o número exibido é limitado a doze algarismos significativos para evitar ruído de ponto flutuante.
Não. O cálculo acontece no seu navegador. Você pode desconectar da internet e continuar calculando, que aliás é a forma mais simples de conferir isso.
Porque duas unidades diferentes têm o mesmo nome. Os fabricantes contam 1 GB = 1.000.000.000 bytes; o Windows mostra gibibytes, ou seja 1.073.741.824 bytes, mas chama de «GB». O mesmo disco parece assim sete por cento menor. Nada sumiu.
Um B é 9,31323e-10 GiB. É a mesma relação lida de trás para frente, então um resultado de uma página passado pela outra tem que voltar ao ponto de partida.
O que esta página afirma sobre unidades de informação pode ser conferido, e estes são os documentos que resolvem a questão.
O fator é uma constante na página e a conta são quatro operações, então nada é enviado a lugar nenhum e nada precisa ser. O número que você digita não sai do navegador — não existe requisição em que ele pudesse viajar.