- Aprender
- Computação e TI
- Ciência da computação
- Introdução à ciência da computação
- Representação binária e de dados
Representação binária e de dados
BásicoAula 2 de 7 do curso Curso de Introdução à ciência da computação
O que você vai aprender
- Explicar como grupos de bits codificam informações e converter números inteiros entre os sistemas decimal, binário e hexadecimal.
- Explicar bits, bytes e quantos valores um grupo de bits pode representarDescrever bits e bytes, calcular quantos padrões uma quantidade de bits permite e ler corretamente unidades de armazenamento e velocidade.
- Converter números inteiros entre os sistemas decimal e binárioUsar valores posicionais para ler números binários e converter números inteiros decimais em binário com dois métodos confiáveis.
- Usar o sistema hexadecimal como representação abreviada do binárioConverter entre os sistemas hexadecimal, binário e decimal e explicar por que programadores escrevem bytes, cores e endereços em hexadecimal.
- Explicar bits, bytes e quantos valores um grupo de bits pode representar
- Armazenar inteiros não negativos e negativos em uma quantidade fixa de bits, calcular suas faixas de representação e explicar o que acontece quando um valor não cabe.
- Armazenar inteiros sem sinal e identificar sua faixa de representaçãoRepresentar números inteiros não negativos em uma largura fixa, escolher uma largura que comporte os valores e explicar o estouro.
- Representar inteiros negativos em complemento de doisLer e escrever números inteiros negativos em complemento de dois, determinar a faixa de uma largura com sinal e compará-la com sinal e magnitude.
- Armazenar inteiros sem sinal e identificar sua faixa de representação
- Escrever frações em binário, codificar e decodificar números nos formatos de ponto flutuante IEEE 754 e explicar os limites de sua faixa de representação e precisão.
- Escrever frações em binário e entender por que algumas não têm representação exataConverter frações entre os sistemas decimal e binário, reconhecer frações binárias periódicas como 0,1 e descrever números de ponto fixo.
- Codificar e decodificar números de ponto flutuante no padrão IEEE 754Usar notação científica binária e os campos de sinal, expoente e fração dos formatos de precisão simples e dupla do IEEE 754.
- Explicar faixa de representação, precisão e erro de arredondamento em ponto flutuanteExplicar por que valores de ponto flutuante são aproximações, prever efeitos típicos como 0,1 + 0,2 e escolher um tipo numérico adequado.
- Escrever frações em binário e entender por que algumas não têm representação exata
- Explicar como caracteres se tornam números e bytes, usar ASCII e Unicode e prever quantos bytes um texto em UTF-8 ocupa.
- Codificar texto usando códigos de caracteres e ASCIIUsar uma tabela de códigos de caracteres para transformar texto em números e bits, interpretar a organização do ASCII e explicar seus limites.
- Usar pontos de código Unicode e codificação UTF-8Distinguir um ponto de código Unicode de seus bytes codificados, codificar caracteres em UTF-8 e explicar texto corrompido e contagem de bytes.
- Codificar texto usando códigos de caracteres e ASCII
- Descrever como imagens se tornam pixels e valores de cor, calcular o armazenamento necessário e explicar como o som é amostrado em números.
- Representar imagens com pixels e valores de corDescrever imagens matriciais, profundidade de cor, RGB e códigos de cores hexadecimais, paletas e transparência.
- Calcular tamanhos de imagens e comparar imagens matriciais com gráficos vetoriaisCalcular o armazenamento necessário para uma imagem ou vídeo sem compressão, explicar o que os arquivos acrescentam e descrever gráficos vetoriais.
- Digitalizar som por amostragem e quantizaçãoExplicar amostragem, taxa de amostragem e profundidade de bits, aplicar a regra de amostragem e calcular o tamanho de áudio sem compressão.
- Representar imagens com pixels e valores de cor
- Explicar como a compressão reduz dados, aplicar métodos simples sem perdas e escolher entre formatos com e sem perdas.
- Explicar a compressão sem perdas com codificação por comprimento de sequência e outros códigosAplicar codificação por comprimento de sequência e códigos de comprimento variável, descrever métodos por dicionário e explicar por que nenhum método reduz todos os arquivos.
- Explicar a compressão com perdas e escolher um formato adequadoDescrever como a compressão com perdas descarta detalhes menos perceptíveis, avaliar qualidade e tamanho e escolher formatos para diferentes tipos de dados.
- Explicar a compressão sem perdas com codificação por comprimento de sequência e outros códigos
Guia de estudo de Representação binária e de dados
1Contar padrões e mudar bases numéricas
Um computador pode usar o mesmo grupo de bits para um número, uma letra ou parte de uma imagem. A interpretação dá significado ao padrão. Antes de trabalhar com essas interpretações, você precisa contar os padrões disponíveis e ler as unidades usadas para armazenamento e transferência. Os sistemas decimal, binário e hexadecimal oferecem três maneiras de escrever um número inteiro, cada uma com valores posicionais que tornam as conversões previsíveis.
1.1 Bits, bytes e unidades de armazenamento
Um bit, abreviação de dígito binário, tem um de dois valores: 0 ou 1. O hardware consegue distinguir dois estados físicos de forma confiável, como tensão alta e baixa, direções opostas de magnetização ou presença e ausência de luz. Os dígitos escritos descrevem esses estados; eles não precisam aparecer literalmente dentro de um dispositivo.
Conte os padrões
Cada novo bit dobra as possibilidades. Dois bits têm quatro padrões: 00, 01, 10 e 11. Três bits têm oito. Em geral, bits geram padrões. Um grupo de quatro bits tem 4 bits, e um byte tem 8 bits, então um byte tem 256 padrões. Um byte também é a menor unidade endereçável de memória na maioria dos computadores modernos.
Para codificar um conjunto de valores, escolha padrões suficientes para cada elemento. Para 26 letras, quatro bits geram apenas 16 padrões; cinco bits geram 32, então cinco bits são suficientes. Para 1.000 valores, nove bits geram 512 e dez geram 1.024. Padrões não utilizados são permitidos. Com 16 bits há 65.536 padrões, e com 32 há 4.294.967.296.
A quantidade de padrões é diferente do maior número sem sinal. Quatro bits fornecem 16 padrões, mas a contagem começa em zero, então os valores vão de 0 a 15. Um padrão já é usado para zero.
Para encontrar a largura mínima de forma sistemática, compare potências sucessivas de dois com a quantidade necessária de possibilidades. Pare na primeira potência que for grande o suficiente. O teste é para N valores distintos. A igualdade exata é permitida: oito possibilidades cabem em três bits, enquanto uma nona precisa de um quarto bit. Uma largura maior também funciona, mas deixa de ser a mínima.
Dê significado ao padrão
O byte 01000001 pode significar o inteiro 65, a letra ASCII “A” ou uma intensidade de 65 em um canal de cor, em uma escala de 0–255. Os bits sozinhos não escolhem uma dessas leituras. O tipo de dado de um programa e o formato do arquivo determinam como interpretá-los.
Leia unidades de armazenamento
Duas famílias de prefixos são comuns:
| Armazenamento decimal | Bytes | Armazenamento binário | Bytes |
|---|---|---|---|
| 1 kB | 1.000 | 1 KiB | 1.024 |
| 1 MB | 1.000.000 | 1 MiB | 1.048.576 |
| 1 GB | 1.000.000.000 | 1 GiB | 1.073.741.824 |
Os prefixos decimais são prefixos do SI; os binários são prefixos da IEC. Em cada passo decimal, a unidade cresce 1.000 vezes; em cada passo binário, cresce 1.024 vezes. Para expressar bytes em uma unidade maior, divida pela quantidade de bytes nessa unidade.
Uma unidade identificada como 500 GB contém 500.000.000.000 de bytes. Dividir por 1.073.741.824 resulta em cerca de 465,66 GiB. Um programa pode identificar essa quantidade binária como “GB”, fazendo a capacidade exibida parecer menor. A mudança de unidade por si só não removeu bytes; formatação e arquivos do sistema são questões distintas.
Distinga bits de bytes
b minúsculo significa bit; B maiúsculo significa byte. Uma conexão de 100 Mbit/s transfere no máximo 100 milhões de bits por segundo. Dividir por 8 resulta em 12,5 milhões de bytes por segundo, ou 12,5 MB/s, antes da sobrecarga de controle dos protocolos. Ler essa velocidade como 100 MB/s torna o valor oito vezes maior que o correto.
Principais conclusões
- Um byte tem 8 bits; um grupo de quatro bits tem 4.
- Cada bit adicional dobra a quantidade de padrões.
- Escolha a menor quantidade de bits para a qual os padrões disponíveis cubram todos os valores.
- Um tipo de dado ou uma codificação dá significado a um padrão de bits.
- Os prefixos de armazenamento do SI usam potências de 10; os da IEC usam potências de 2.
- Divida uma taxa de bits por 8 para obter a taxa correspondente em bytes.
1.2 Valor posicional e conversão em binário
O binário é um sistema de numeração posicional: o valor de um dígito depende de sua posição. O decimal usa dez dígitos e potências de 10. O binário usa dois dígitos, 0 e 1, e potências de 2. Para ler um número binário, basta somar os valores das posições que contêm 1.
Leia um número inteiro binário
Da direita para a esquerda, os valores posicionais são 1, 2, 4, 8, 16, 32, 64, 128 e assim por diante. Cada um é o dobro do anterior, pois , e .
Para , alinhe os seis bits com seus valores posicionais:
| Posição | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|
| Bit | 1 | 0 | 1 | 1 | 0 | 1 |
O valor é . Um zero não contribui para a soma, mas mantém os outros dígitos nas posições corretas. Zeros à esquerda não alteram o valor: 00101101 também é 45.
O bit mais à esquerda é o bit mais significativo, ou MSB. O mais à direita é o bit menos significativo, ou LSB. Todos os valores posicionais, exceto o último, são pares, então um número inteiro binário é ímpar exatamente quando seu LSB é 1.
Converta por subtração de potências de dois
Para escrever 156 em binário, comece com a maior potência de dois que cabe no número: 128. Subtraia-a, restando 28. Os valores posicionais 64 e 32 não cabem, então ambos recebem 0. Use 16, restando 12; use 8, restando 4; use 4, restando 0. As posições não utilizadas de 2 e 1 recebem 0.
Na ordem das posições, o resultado é . Confira somando os valores posicionais escolhidos: . Pular uma coluna não utilizada deslocaria todos os bits seguintes e mudaria o número.
O método de subtração funciona porque cada posição binária pode ser usada no máximo uma vez. Depois de usar a maior potência que cabe, o resto é menor que essa potência. Continue descendo por todas as posições, incluindo as que recebem zero, até preencher a posição das unidades. Isso alinha os bits escolhidos a potências distintas, em vez de formar uma lista de potências sem posições.
Converta por divisões sucessivas
Outro método divide por 2 sucessivamente. Mantenha o quociente para a próxima divisão e registre o resto:
| Número | Quociente | Resto |
|---|---|---|
| 156 | 78 | 0 |
| 78 | 39 | 0 |
| 39 | 19 | 1 |
| 19 | 9 | 1 |
| 9 | 4 | 1 |
| 4 | 2 | 0 |
| 2 | 1 | 0 |
| 1 | 0 | 1 |
Leia os restos de baixo para cima, obtendo 10011100. O primeiro resto pertence à posição das unidades, então lê-los de cima para baixo inverte a ordem das posições. Aqui, isso produziria 00111001, que é 57.
Mantenha a base visível
O subscrito em significa base 2, então seu valor é dois. Os mesmos dígitos em significam dez. O binário geralmente é lido dígito por dígito: “um zero”. A contagem segue 0, 1, 10, 11, 100, 101, 110, 111, 1000; uma coluna gera um transporte quando chega a 2. Uma sequência de oito uns é . Acrescentar um zero desloca cada posição para a esquerda e dobra o valor: 101 torna-se 1010, passando de cinco para dez.
Principais conclusões
- Some as potências de dois cujos bits são 1.
- Zeros à esquerda preservam o valor; posições internas ausentes não.
- Leia os restos das divisões sucessivas do último para o primeiro.
- Um número inteiro é ímpar exatamente quando seu bit menos significativo é 1.
- Acrescentar um zero dobra um número inteiro binário sem limite de largura.
1.3 Hexadecimal como binário mais fácil de ler
O sistema hexadecimal, ou hex, escreve números na base 16. Seus dígitos são 0–9 seguidos de A, B, C, D, E e F, que significam de 10 a 15. Um único dígito hexadecimal pode descrever qualquer grupo possível de quatro bits, facilitando a leitura de padrões binários longos.
Relacione quatro bits a um dígito
Como , cada posição hexadecimal corresponde exatamente a quatro posições binárias:
| Hex | Binário | Hex | Binário |
|---|---|---|---|
| 0 | 0000 | 8 | 1000 |
| 1 | 0001 | 9 | 1001 |
| 2 | 0010 | A | 1010 |
| 3 | 0011 | B | 1011 |
| 4 | 0100 | C | 1100 |
| 5 | 0101 | D | 1101 |
| 6 | 0110 | E | 1110 |
| 7 | 0111 | F | 1111 |
Para converter de binário para hexadecimal, agrupe a partir da direita. O padrão 10011100 torna-se 1001 1100, ou 0x9C. Para um último grupo mais curto à esquerda, acrescente zeros à esquerda: 101101 torna-se 0010 1101, ou 0x2D. Agrupá-lo a partir da esquerda como 1011 01 colocaria os dígitos nas posições erradas.
Para fazer a conversão inversa, expanda cada dígito em quatro bits. Assim, 0x3E8 torna-se 0011 1110 1000. Mantenha os quatro bits de cada grupo, mesmo quando um grupo começa com zeros. Somente os zeros na extremidade esquerda do número inteiro podem ser retirados sem mudar seu valor.
Use valores posicionais de base 16
Da direita para a esquerda, os valores posicionais hexadecimais são 1, 16, 256 e 4.096. Multiplique o valor de cada dígito por seu valor posicional e some. Para 0x2F, o cálculo é . Para 0x3E8:
A conversão de decimal para hexadecimal também funciona por divisões sucessivas, agora por 16. Para 1.000, o primeiro quociente é 62 com resto 8. Dividir 62 resulta em quociente 3 com resto 14, escrito como E. Dividir 3 resulta em quociente 0 com resto 3. Leia os restos de baixo para cima: 3, E, 8.
O agrupamento funciona por causa do valor posicional, não apenas por uma tabela de correspondência. Em um número hexadecimal de dois dígitos, o grupo de quatro bits à esquerda contribui com seu valor multiplicado por 16, e o grupo à direita contribui com seu valor multiplicado por 1. Em binário, deslocar um grupo de quatro bits quatro posições à esquerda também multiplica seu valor por 16. Esse fator comum permite ler os dois grupos independentemente, sem primeiro converter o número inteiro para decimal.
Reconheça usos comuns
Um byte tem dois grupos de quatro bits, então corresponde exatamente a dois dígitos hexadecimais, de 0x00 a 0xFF. Um visualizador de bytes pode mostrar um arquivo longo de forma quatro vezes mais compacta em hexadecimal que em binário, mantendo visíveis os limites dos grupos.
Cores da web como #FF8000 usam pares de dígitos hexadecimais para vermelho, verde e azul. Endereços de memória e pontos de código Unicode como U+00E9 também usam hexadecimal. Um endereço MAC como 3C:22:FB:9A:01:7E escreve seis bytes como doze dígitos hexadecimais, com separadores entre os bytes.
O prefixo 0x, um subscrito de base como ou o # em um código de cor identifica a notação. O computador armazena os mesmos bits independentemente da notação usada por uma pessoa. Em particular, 0x10 significa dezesseis. O valor quinze é o único dígito F; escrever “15” ocupa duas posições hexadecimais e significa vinte e um.
Principais conclusões
- O hexadecimal usa 0–9 e A–F, com A–F representando 10–15.
- Agrupe o binário em grupos de quatro a partir da direita para converter para hexadecimal.
- Um byte corresponde exatamente a dois dígitos hexadecimais.
- Os valores posicionais hexadecimais são potências de 16; mudar a notação não muda os bits armazenados.
2Armazenar números inteiros em uma largura fixa
Uma quantidade fixa de bits só pode conter um conjunto fixo de números inteiros. A interpretação escolhida determina se todos esses padrões representam valores não negativos ou se alguns representam valores negativos. Você lerá o mesmo byte das duas formas, escolherá larguras que comportem uma faixa necessária e acompanhará o que acontece nos extremos. O complemento de dois também explica como valores negativos mantêm seu significado quando sua largura aumenta.
2.1 Valores sem sinal e estouro
Um inteiro sem sinal representa um número inteiro não negativo. Todos os seus bits têm os pesos binários positivos usuais. A largura determina quantas posições estão disponíveis, então um byte não pode ganhar um nono bit só porque um resultado precisa dele.
Determine a faixa de representação
Para bits, existem padrões. Começando em zero, a faixa vai de . O maior valor tem 1 em cada posição:
| Largura | Faixa sem sinal |
|---|---|
| 8 bits | 0–255 |
| 16 bits | 0–65.535 |
| 32 bits | 0–4.294.967.295 |
A quantidade de valores disponíveis e o valor máximo diferem em uma unidade. Oito bits permitem 256 possibilidades, mas o próprio 256 precisa de nove posições, 1 0000 0000.
Um valor armazenado preenche sua largura com zeros à esquerda. Por exemplo, 45 em 16 bits é 0000000000101101, ou 0x002D. Esses zeros identificam a largura sem alterar o valor. Um número negativo não tem representação sem sinal, independentemente da largura escolhida.
Escolha posições suficientes
Uma faixa de idade de 0 a 150 cabe em 8 bits porque 150 é menor que 255. Uma contagem de 0 a 100.000 contém 100.001 valores possíveis. Dezesseis bits oferecem apenas 65.536 padrões. Dezessete oferecem 131.072, então 17 é a largura matemática mínima. Um programa que usa as larguras comuns de 8, 16, 32 e 64 escolheria 32 bits.
O mesmo raciocínio vale para qualquer contador limitado: verifique o maior valor que o contador precisa realmente armazenar, incluindo os dois extremos. Uma faixa de 0 a 256 precisa de 257 padrões e, portanto, não cabe em um byte.
Uma verificação útil dos limites compara larguras adjacentes. O máximo sem sinal para 8 bits é 255 e para 9 bits é 511. Acrescentar um bit dobra a quantidade de padrões; o máximo passa a ser o dobro do máximo anterior mais um. Essa distinção importa quando um valor exigido coincide exatamente com uma potência de dois: esse extremo precisa de uma nova posição, mesmo que a largura anterior tenha essa quantidade de padrões.
Acompanhe um resultado fora da faixa
Estouro significa que um resultado não cabe na representação escolhida. Se um cálculo de 8 bits mantiver apenas os oito bits menos significativos, 255 mais 1 produz 1 0000 0000 e armazena 00000000: zero. A posição extra é descartada.
Para 200 mais 100, o resultado matemático é 300. A largura mantém o resto após um ciclo completo de 256 padrões: . O byte armazenado é 00101100. Esse comportamento é chamado de retorno cíclico. Ele não muda o fato aritmético de que 200 mais 100 é 300; descreve o que o armazenamento limitado retém.
O comportamento no estouro depende do sistema. Algumas operações fazem o retorno cíclico, algumas sinalizam um erro e alguns tipos numéricos crescem. Um cálculo sobre retorno cíclico deve identificar esse comportamento antes de você descartar bits mais significativos.
Veja larguras fixas nos dados
Um endereço IPv4 tem 32 bits, o que fornece cerca de 4,3 bilhões de padrões possíveis. Esse espaço finito de endereços contribuiu para a necessidade de um sistema de endereçamento maior. Um canal de cor RGB comum tem 8 bits, o que explica sua escala de intensidade de 0–255. O máximo nos dois casos decorre da largura; uma escrita decimal mais longa não acrescenta capacidade de armazenamento.
Principais conclusões
- Um inteiro sem sinal de n bits vai de 0 a 2ⁿ − 1.
- Conte os dois extremos ao escolher uma largura.
- Zeros à esquerda preenchem uma largura sem mudar um valor sem sinal.
- Estouro significa que um resultado está fora da faixa representável.
- Quando um sistema mantém apenas os n bits menos significativos, valores sem sinal retornam ciclicamente em ciclos de 2ⁿ.
2.2 Inteiros negativos em complemento de dois
Um inteiro negativo precisa de uma regra de representação, não apenas de um sinal de menos escrito ao lado de um byte. O complemento de dois atribui um peso negativo ao bit mais significativo. As demais posições mantêm seus pesos positivos, então cada padrão tem um único valor com sinal e o zero tem um único padrão.
Compare duas leituras com sinal
Um esquema mais simples, sinal e magnitude, usa o bit mais significativo apenas para o sinal e os bits restantes para a magnitude. Em 8 bits, +5 é 00000101 e −5 é 10000101. Ele tem dois zeros, 00000000 e 10000000, e a adição de números com sinais diferentes exige regras adicionais.
Em complemento de dois de 8 bits, os pesos são −128, 64, 32, 16, 8, 4, 2 e 1. Assim, 11010011 significa . Ler os outros sete bits como uma magnitude de 83 resultaria em −83, que pertence a outra representação.
| Largura | Faixa em complemento de dois |
|---|---|
| 8 bits | −128–127 |
| 16 bits | −32.768–32.767 |
| 32 bits | −2.147.483.648–2.147.483.647 |
Em geral, a faixa vai de . Zero e valores positivos têm a mesma aparência que no binário comum com um 0 à esquerda. Apenas uns representam −1.
Escreva um valor negativo
Para negar um valor representável, inverta cada bit e some 1, mantendo a largura fixa. Para codificar −45 em 8 bits:
- Escreva +45 como 00101101.
- Inverta os oito bits: 11010010.
- Some 1: 11010011, ou 0xD3.
Parar após a inversão produz −46. Aplicar o processo completo a 11010011 resulta novamente em 00101101, recuperando +45.
Outra forma codifica como o valor sem sinal . Aqui, , cuja forma binária é 11010011. O byte significa, portanto, 211 sem sinal ou −45 com sinal. Os bits não mudaram; o tipo mudou.
A inversão seguida de adição também tem uma explicação aritmética. Para um valor positivo x de n bits, a inversão o transforma no valor sem sinal . Somar um resulta em , cuja interpretação com sinal é −x. Isso relaciona o método bit a bit ao método de subtração e explica por que omitir o 1 final produz o valor negativo errado.
Preserve um valor com sinal em mais bits
A extensão de sinal copia o bit mais significativo para as novas posições à esquerda. −3 em quatro bits é 1101; em 8 bits é 11111101. Seu peso negativo mais significativo e os pesos positivos acrescentados ainda somam −3. Completá-lo com zeros resultaria em 00001101, ou +13. Valores positivos são estendidos com zeros: 0011 torna-se 00000011.
Reconheça os extremos
O complemento de dois permite a adição binária comum para resultados que cabem na faixa. Em 4 bits, 0101 mais 1101, que significa 5 mais −3, resulta em 1 0010. Manter os quatro bits menos significativos resulta em 0010, ou 2. Isso permite que o mesmo hardware básico de adição processe valores com e sem sinal.
Um resultado fora da faixa é diferente: 127 mais 1 em 8 bits deixa 10000000, que é lido como −128. Além disso, −128 não tem um correspondente positivo em 8 bits. Inverter 10000000 e somar 1 resulta novamente em 10000000 porque +128 está fora da faixa. Aumente a largura da representação antes de formar esse valor positivo.
Principais conclusões
- O bit mais significativo tem peso −2ⁿ⁻¹ em complemento de dois com n bits.
- O complemento de dois tem um zero e um valor negativo a mais que valores positivos.
- Para negar, inverta cada bit e some 1 dentro da largura fixa.
- A extensão de sinal copia o bit mais significativo para as posições acrescentadas.
- O valor mais negativo não tem um correspondente positivo na mesma largura.
- O mesmo padrão pode ter significados diferentes com e sem sinal.
3Armazenar frações e valores de ponto flutuante
As posições dos números inteiros se estendem à direita do separador binário como metades, quartos e frações menores. Algumas frações decimais terminam em binário, enquanto outras exigem um padrão infinito. O ponto fixo reserva uma quantidade definida de posições fracionárias; o ponto flutuante armazena uma escala além de um significando. Ler esses formatos permite entender tanto sua ampla faixa de representação quanto seus erros de arredondamento, incluindo o conhecido resultado da soma de 0,1 e 0,2.
3.1 Frações binárias e ponto fixo
A primeira posição após o separador binário é um meio. Cada posição seguinte vale metade da anterior: um quarto, um oitavo, um dezesseis avos e assim por diante. Um 1 contribui com essa fração; um 0 a deixa de fora. As posições inteiras à esquerda mantêm suas potências de dois usuais.
Leia e construa uma fração binária
Para , a parte inteira é 4 mais 1. A parte fracionária é um meio mais um oitavo, resultando em .
Para converter uma fração decimal, multiplique-a por 2 sucessivamente. A parte inteira de cada resultado é o próximo dígito binário; mantenha apenas a parte fracionária para a próxima multiplicação. Para 0,375:
- , então o primeiro bit é 0.
- , então o próximo bit é 1; mantenha 0,5.
- , então o próximo bit é 1 e o processo termina.
O resultado é . Seu valor é um quarto mais um oitavo, ou 0,375. Esses bits são lidos na ordem em que foram encontrados, diferentemente dos restos na divisão de números inteiros.
Determine se a expansão termina
Reduza a fração à forma irredutível. Ela tem uma expansão binária finita exatamente quando seu denominador é uma potência de 2. Valores como 0,5, 0,25, 0,75 e 0,375 satisfazem essa condição. Por exemplo, 0,375 é 3/8, e oito é uma potência de dois.
O decimal 0,1 é 1/10. Seu denominador inclui um fator 5, então sua expansão binária se repete: . Assim como um terço não termina em decimal, um décimo não termina em binário. A forma escrita curta “0,1” precisa, portanto, de uma aproximação quando há apenas uma quantidade limitada de posições binárias disponíveis. O mesmo problema afeta 0,2 e 0,3.
A regra do denominador decorre das próprias posições. Uma sequência finita que termina na f-ésima posição fracionária pode ser escrita como um inteiro dividido por . Reduzir essa fração pode remover fatores de dois, mas não pode introduzir outro fator primo no denominador. Um denominador reduzido que contém cinco, portanto, não pode ser igual a nenhuma soma binária finita desse tipo.
Reserve uma escala fixa
Uma representação de ponto fixo atribui uma quantidade definida de bits à parte fracionária. Com quatro bits para a parte inteira e quatro para a parte fracionária, 0110,1000 significa 6,5. O menor intervalo é , e o maior valor sem sinal é 1111,1111, ou 15,9375.
De forma equivalente, o inteiro armazenado de oito bits é escalado por 1/16. O padrão 01101000 tem valor sem sinal 104; dividir por 16 resulta em 6,5. O separador faz parte da interpretação, então não precisa ser armazenado como um símbolo extra.
Manter oito bits no total, mas usar cinco bits para a parte inteira e três para a parte fracionária, faz o intervalo ser 0,125 e o máximo ser 31,875. Você ganha faixa de representação, mas perde espaçamento fino. O ponto fixo representa exatamente os múltiplos de seu intervalo dentro de sua faixa.
Uma contagem exata de centavos usa uma ideia de escala relacionada: 19,99 unidades monetárias tornam-se o inteiro 1999 centavos. Para medidas que abrangem magnitudes muito diferentes, o ponto flutuante armazena uma escala móvel, permitindo que a mesma largura cubra uma faixa muito maior que o ponto fixo.
Principais conclusões
- As posições fracionárias binárias são 1/2, 1/4, 1/8 e assim por diante.
- Multiplique uma parte fracionária por 2 e leia as partes inteiras em ordem.
- Uma fração irredutível termina em binário exatamente quando seu denominador é uma potência de 2.
- O ponto fixo estabelece um compromisso entre faixa de representação e resolução fracionária para uma largura total fixa.
3.2 Ler e escrever os campos do IEEE 754
O ponto flutuante escreve um valor em notação científica binária. Por exemplo, 6,25 é . A parte inicial é o significando, e o expoente define sua escala. O IEEE 754 define formatos amplamente usados para armazenar essas partes.
Conheça os campos
| Formato | Total | Sinal | Expoente | Fração | Viés |
|---|---|---|---|---|---|
| Simples, binary32 | 32 bits | 1 | 8 | 23 | 127 |
| Dupla, binary64 | 64 bits | 1 | 11 | 52 | 1023 |
Para um valor normal, a leitura é . Aqui, é o bit de sinal, é o expoente armazenado sem sinal e é o campo da fração. Um bit de sinal 0 significa positivo; 1 significa negativo. Alterar apenas o bit de sinal nega um valor de ponto flutuante.
O expoente armazenado é igual ao expoente real mais o viés. Em precisão simples, o expoente 2 torna-se 129, ou 10000001; o expoente −3 torna-se 124, ou 01111100. Os expoentes normais armazenados vão de 1 a 254, representando de −126 a 127.
Um significando binário normal sempre começa com 1, então o formato omite esse bit implícito. Apenas os bits após o separador entram no campo da fração. Isso fornece 24 dígitos binários significativos em precisão simples e 53 em dupla.
Codifique −6,25 passo a passo
Primeiro, normalize sua magnitude: . Depois, preencha os campos:
- Valor negativo: sinal 1.
- Expoente 2: some 127 para obter 129, escrito como 10000001.
- Fração ,1001: armazene 1001 seguido de 19 zeros.
O resultado é 1 10000001 10010000000000000000000, ou 0xC0C80000. Os zeros de preenchimento da fração vão à direita porque essas posições continuam após o separador. Armazenar o 1 inicial deslocaria o significado da fração.
Um expoente real negativo desloca a escala para abaixo de um. Para 0,15625, a forma binária é . Seu sinal em binary32 é 0 e seu expoente armazenado é 124, ou 01111100. A fração começa com 01 e é completada à direita. O 1 implícito ainda pertence ao significando normalizado, embora o número completo seja menor que um.
Decodifique um padrão
O padrão de precisão simples 0x41200000 divide-se em 0 10000010 01000000000000000000000. O sinal é positivo. O campo do expoente é 130, então subtraia 127 para obter 3. Restaure o 1 implícito para obter . Por fim, .
Verifique primeiro os expoentes reservados
A fórmula normal não descreve todos os padrões:
| Campo do expoente | Campo da fração | Significado |
|---|---|---|
| Todos zeros | Zero | +0 ou −0, escolhido pelo sinal |
| Todos zeros | Diferente de zero | Um valor subnormal, com 0 inicial |
| Todos uns | Zero | Infinito positivo ou negativo |
| Todos uns | Diferente de zero | NaN, “não é um número” |
Valores subnormais representam valores muito pequenos sem o 1 implícito. NaN pode resultar de uma operação numérica inválida, como 0 dividido por 0. O IEEE 754-2019 define esses formatos.
Principais conclusões
- A precisão simples tem campos de 1, 8 e 23 bits; a dupla tem 1, 11 e 52.
- Subtraia o viés do expoente ao decodificar; some-o ao codificar.
- Valores normais têm um 1 inicial que não é armazenado.
- Complete o campo da fração com zeros à direita.
- Campos de expoente com todos zeros ou todos uns têm significados especiais.
- Os campos de sinal e expoente de ponto flutuante não são um inteiro em complemento de dois.
3.3 Faixa de representação, precisão e erro de arredondamento
Um formato de ponto flutuante pode cobrir uma faixa enorme sem representar todos os valores nela contidos. O expoente controla a escala; o campo da fração controla quantos bits significativos distinguem valores próximos. Faixa de representação e precisão respondem a perguntas diferentes.
Compare precisão simples e dupla
A precisão simples alcança cerca de e tem cerca de sete dígitos decimais significativos. Seu menor valor normal positivo é cerca de . A precisão dupla alcança cerca de , tem cerca de 15–16 dígitos decimais significativos e tem um menor valor normal positivo de cerca de . Valores subnormais estendem a faixa abaixo do mínimo normal em cada formato.
Dígitos significativos são contados a partir do primeiro dígito significativo, não do separador decimal. Um expoente grande não cria mais bits de fração. Em precisão simples, a distância acima de 1 é . Entre e a distância é 2, então o inteiro 16.777.217 não está disponível, embora esteja muito abaixo do valor finito máximo.
Arredonde para um valor que caiba
O padrão do IEEE 754 é arredondar para o mais próximo, com empates para o par. Escolha o valor representável mais próximo; em um ponto exatamente no meio, escolha aquele cujo último bit mantido do significando é par. Assim, 16.777.217 é arredondado para 16.777.216 em precisão simples.
A diferença entre o valor pretendido e o valor armazenado é o erro de arredondamento. Em precisão simples, 0,1 é armazenado como 0,100000001490116119384765625. Em precisão dupla, é aproximadamente 0,10000000000000000555. Mais precisão reduz esse erro, mas não pode fazer uma expansão periódica terminar.
Entenda um resultado conhecido
Com a aritmética comum de precisão dupla do IEEE 754, somar 0,1 e 0,2 produz um resultado armazenado comumente exibido como 0.30000000000000004. Ele difere da aproximação armazenada de 0,3, então 0.1 + 0.2 == 0.3 é falso em linguagens como Python e JavaScript. Para resultados de medições, compare a diferença com uma tolerância escolhida conforme a escala e a finalidade da tarefa.
Muitos valores são exatos. A precisão dupla representa exatamente todos os inteiros de a . Valores como 0,5 e 0,375 também têm formas binárias curtas que cabem tanto no significando quanto na faixa do expoente.
Escolha um tipo numérico adequado
Inteiros são adequados para contagens e identificadores. Quantias financeiras exatas são adequadas para unidades menores inteiras, como centavos, ou para um tipo numérico decimal. Medidas e cálculos científicos frequentemente são adequados para ponto flutuante. Uma magnitude grande demais para o formato pode causar estouro para infinito; pela regra padrão de arredondamento, em precisão simples torna-se infinito positivo. Resultados muito pequenos podem se tornar subnormais ou ser arredondados para zero.
As convenções de apresentação são separadas do armazenamento. As escritas “3.14” e “3,14” podem representar o mesmo número em diferentes localidades. Um leitor de texto precisa conhecer essa convenção; caso contrário, pode rejeitar a vírgula ou ler o valor como 314. Mudar o separador impresso não melhora a precisão binária.
Principais conclusões
- A faixa de representação controla a magnitude; a precisão controla o espaçamento entre valores próximos.
- Os intervalos entre valores de ponto flutuante crescem conforme a magnitude aumenta.
- A regra padrão arredonda para o mais próximo; em empates exatos, escolhe o último bit par.
- Uma fração decimal curta ainda pode precisar de arredondamento em binário.
- Escolha armazenamento inteiro, decimal ou de ponto flutuante conforme a tarefa.
4Transformar caracteres em códigos e bytes
O texto exige um acordo entre o programa que o escreve e o que o lê. O ASCII atribui códigos numéricos a um pequeno conjunto de caracteres. O Unicode fornece um espaço de códigos compartilhado para muitos sistemas de escrita, enquanto codificações como UTF-8 determinam os bytes efetivos. Distinguir um caractere exibido de um ponto de código e de um byte ajuda você a calcular tamanhos de texto e explicar por que um arquivo salvo corretamente pode aparecer corrompido.
4.1 Códigos ASCII e seus limites
Para armazenar texto, um sistema atribui códigos numéricos aos caracteres e escreve esses números como bits. Um código de caractere só funciona quando quem lê usa o mesmo acordo de quem escreve. O byte de uma letra é um identificador codificado; ele não é uma pequena imagem dessa letra.
Leia a tabela ASCII
O ASCII, Código Padrão Americano para Intercâmbio de Informação, foi publicado pela primeira vez em 1963. Ele usa 7 bits para 128 códigos, numerados de 0 a 127. No armazenamento em bytes, um código ASCII geralmente preenche um byte com um 0 à esquerda.
| Códigos | Significado |
|---|---|
| 0–31 e 127 | Caracteres de controle |
| 32 | Espaço |
| 48–57 | Dígitos “0”–“9” |
| 65–90 | Maiúsculas “A”–“Z” |
| 97–122 | Minúsculas “a”–“z” |
A pontuação ocupa os intervalos. Os códigos de 32 a 126 formam 95 caracteres imprimíveis, incluindo o espaço. Os caracteres de controle afetam o tratamento do texto sem imprimir um símbolo visível: tabulação é 9, avanço de linha é 10 e retorno de carro é 13.
Codifique uma cadeia curta
A sequência dos caracteres “H”, “i” e “!” tem três caracteres. Seus códigos decimais são 72, 105 e 33; em hexadecimal, são 0x48, 0x69 e 0x21. Como bytes completos, a sequência torna-se 01001000 01101001 00100001. O ponto de exclamação precisa de um código assim como as letras.
O código de uma letra minúscula no ASCII é 32 unidades maior que o da versão maiúscula. “A” é 65, ou 01000001, enquanto “a” é 97, ou 01100001. Um único bit alterado explica a diferença. A ordem também coloca todas as letras maiúsculas antes de todas as minúsculas. Uma ordenação simples por código coloca, portanto, “Zebra” antes de “apple”; ela não segue a ordem comum de dicionário.
Separe um dígito de um número
O caractere “7” tem código decimal 55 e byte 00110111. O inteiro 7 tem byte 00000111. Para recuperar o valor numérico de um dígito a partir de seu código ASCII, subtraia 48, o código de “0”: . Isso funciona porque os códigos dos dez dígitos são consecutivos.
O armazenamento depende da representação escolhida. O texto “2026” precisa de quatro bytes ASCII, um por dígito. O inteiro 2026 cabe em dois bytes como um valor sem sinal de 16 bits. O texto preserva a sequência de caracteres; um inteiro representa o valor numérico. Por exemplo, um identificador em texto pode preservar zeros à esquerda que um inteiro não distingue.
Para codificar uma cadeia mais longa, processe cada caractere em ordem, incluindo espaços, pontuação e caracteres de controle. A decodificação faz a consulta inversa, um código por vez, usando a mesma tabela. A sequência importa: trocar dois códigos válidos de posição ainda pode produzir ASCII válido, mas produz um texto diferente. Uma consulta bem-sucedida mostra que os códigos são reconhecidos, não que tenham a ordem ou o significado pretendido.
Veja por que páginas de códigos causavam problemas
O ASCII não tem letras acentuadas como “é”, “ñ” ou “ü”, nem caracteres gregos, cirílicos, árabes ou chineses. Páginas de códigos de 8 bits posteriores usavam os valores de 128 a 255 para símbolos adicionais, mas não havia acordo sobre quais símbolos acrescentar.
Por exemplo, o byte 0xE9 significa “é” em Latin-1, mas “й” em Windows-1251. Windows-1252 é outra página de códigos comum. Portanto, o valor de um byte não pode identificar um caractere fora do ASCII sem que se conheça a codificação. Usar a tabela errada pode produzir símbolos que parecem legíveis, mas ainda assim formam o texto errado.
Principais conclusões
- O ASCII define 128 códigos usando 7 bits, geralmente armazenados um por byte.
- Caracteres imprimíveis incluem espaços e pontuação; caracteres de controle têm outras funções.
- Caracteres de dígitos têm códigos diferentes dos inteiros que representam.
- Páginas de códigos antigas diferentes podem atribuir caracteres diferentes ao mesmo byte.
4.2 Pontos de código Unicode e codificações UTF
O Unicode atribui aos caracteres de sistemas de escrita do mundo todo um conjunto compartilhado de números chamados pontos de código. “A” é U+0041, “é” é U+00E9, “Ж” é U+0416, “中” é U+4E2D e “😀” é U+1F600. A notação U+ usa hexadecimal com pelo menos quatro dígitos.
Separe um ponto de código de seus bytes
O espaço de códigos vai de U+0000 a U+10FFFF, ou 1.114.112 posições, com mais de 150.000 caracteres atribuídos. Um ponto de código identifica um caractere ou uma posição reservada; uma codificação determina sua representação em bytes.
| Codificação | Armazenamento para um ponto de código de caractere válido |
|---|---|
| UTF-8 | 1–4 bytes |
| UTF-16 | 2 bytes até U+FFFF; 4 bytes acima disso |
| UTF-32 | 4 bytes |
O intervalo de substitutos U+D800–U+DFFF é reservado para o mecanismo de pares do UTF-16; substitutos isolados não são caracteres válidos para codificação nessas formas. Um par de unidades de código UTF-16 representa um ponto de código suplementar. Por exemplo, “😀” é D83D DE00 em UTF-16.
Leia as faixas de bytes do UTF-8
O UTF-8 preserva o ASCII: U+0000–U+007F usam um byte. U+0080–U+07FF usam dois; pontos de código de caracteres válidos em U+0800–U+FFFF usam três; U+10000–U+10FFFF usam quatro. Isso torna o texto ASCII em inglês compatível byte a byte com o UTF-8.
Um caractere de um byte começa com 0. Caracteres mais longos começam com 110, 1110 ou 11110 para dois, três ou quatro bytes. Cada byte de continuação começa com 10. Os bits restantes carregam o ponto de código.
Para “é”, U+00E9, o valor em 11 bits é 00011101001. Divida-o em cinco bits e seis bits: 00011 e 101001. Insira-os em 110xxxxx 10xxxxxx para obter 11000011 10101001, ou C3 A9. O ponto de código 00E9 não é, por si só, a sequência de bytes UTF-8.
A codificação e a decodificação também devem respeitar os prefixos dos bytes. Um byte de continuação UTF-8 não é um byte ASCII independente: seus dois primeiros bits são 10, então ele pertence a uma sequência de caractere mais longa. Remover parte de um caractere de vários bytes em um limite de bytes pode deixar uma sequência incompleta. O comprimento de armazenamento e os limites em que o texto pode ser dividido estão, portanto, relacionados.
Conte os elementos certos
“café” tem quatro caracteres exibidos, mas cinco bytes em UTF-8: 63 61 66 C3 A9. “€” usa E2 82 AC, três bytes; “中” usa E4 B8 AD, também três; “😀” usa F0 9F 98 80, quatro. Um limite de bytes pode, portanto, permitir menos caracteres do que seu valor numérico sugere.
Um caractere exibido também pode conter vários pontos de código. “é” pode ser U+00E9 ou “e” seguido de U+0301, um acento agudo combinante. A segunda forma usa três bytes UTF-8, 65 CC 81. A normalização converte sequências equivalentes em uma forma comum para comparação. O emoji exibido “👍🏽” contém dois pontos de código, U+1F44D e U+1F3FD, totalizando oito bytes UTF-8.
Identifique texto corrompido
“café” em UTF-8, lido como Windows-1252, torna-se “café”: C3 e A9 são tratados como caracteres separados. Isso é mojibake, causado pela decodificação com a codificação errada. A decodificação correta pode recuperar o texto enquanto os bytes originais permanecem intactos. Uma página da web pode declarar sua codificação com <meta charset="utf-8">.
Principais conclusões
- Um ponto de código identifica um caractere; uma codificação determina seus bytes.
- O UTF-8 usa de um a quatro bytes, preservando o ASCII inalterado.
- Bytes de continuação em UTF-8 começam com 10.
- Um caractere exibido, um ponto de código e um byte são unidades de contagem diferentes.
- A normalização pode colocar sequências de caracteres equivalentes em uma mesma forma.
- Decodificar com a codificação errada pode produzir texto corrompido.
5Medir imagens e som em bits
Imagens e gravações transformam detalhes visuais e sonoros em números. Uma imagem matricial armazena uma grade de valores de pixels; o áudio amostrado armazena medidas feitas em intervalos regulares. O armazenamento depende de quantos valores são mantidos e de quantos bits cada valor precisa. Essas escolhas também afetam os detalhes preservados. Desenhos vetoriais e MIDI adotam outra abordagem, descrevendo formas ou notas como instruções que um dispositivo transforma depois em imagem ou som.
5.1 Pixels, RGB, paletas e transparência
Uma imagem matricial é uma grade de pixels. Cada pixel contém um valor de cor. A largura e a altura fornecem a resolução da imagem: 1920 por 1080 significa pixels. Uma contagem de pixels descreve a grade, não seu tamanho impresso em metros.
Atribua bits suficientes a cada pixel
A profundidade de cor é a quantidade de bits usados para a cor de um pixel. Uma profundidade de bits permite códigos possíveis. Um bit pode distinguir duas cores. Uma escala de cinza de oito bits pode distinguir 256 intensidades, geralmente de 0 para preto a 255 para branco.
Uma imagem simples de 3 por 3 pode usar 1 para preto e 0 para branco. Um sinal de mais preto é representado pelas linhas 010, 111 e 010. Nove pixels com um bit cada precisam de nove bits de informação de pixels. O armazenamento real do arquivo pode incluir preenchimento e outras informações além desses bits.
Misture luz com RGB
RGB armazena intensidades de luz vermelha, verde e azul. Com 8 bits por canal, cada intensidade varia de 0 a 255, e um pixel usa 24 bits. A quantidade de cores possíveis é .
| Valores RGB | Cor |
|---|---|
| (0, 0, 0) | Preto |
| (255, 255, 255) | Branco |
| (255, 0, 0) | Vermelho |
| (0, 0, 255) | Azul |
| (255, 255, 0) | Amarelo |
RGB é a mistura aditiva de luz. Combinar luz vermelha e verde produz amarelo. Uma previsão baseada na mistura de tintas usa um processo diferente e fornece o modelo errado para uma tela.
Leia códigos de cores hexadecimais
Uma cor da web usa #RRGGBB: dois dígitos hexadecimais para vermelho, depois verde e depois azul. #FF8000 significa (255, 128, 0), um laranja. #808080 significa (128, 128, 128), um cinza médio; valores iguais nos canais produzem um cinza. #0000FF fornece o maior valor de azul, com vermelho e verde em zero.
Cada par é um byte. Assim, FF é 255, não um par de intensidades de cor separadas. O # marca o código RGB inteiro e não ocupa um canal.
Os modelos RGB e de paleta consultam a cor do pixel de formas diferentes. No RGB direto, a leitura do pixel fornece imediatamente as intensidades dos três canais. Na cor indexada, a leitura do pixel fornece o número de uma entrada, e uma segunda consulta fornece as intensidades. Alterar uma entrada da paleta pode, portanto, mudar muitos pixels exibidos que compartilham o mesmo índice, mesmo que seus índices armazenados permaneçam inalterados.
Armazene um índice de paleta
Quando uma imagem usa poucas cores, ela pode manter uma paleta de cores, uma tabela das cores selecionadas. Um pixel armazena então um índice dessa tabela. Uma paleta de 16 cores precisa de quatro bits por pixel porque quatro bits distinguem 16 entradas. A própria paleta também ocupa espaço. O GIF usa até 256 cores na paleta, permitindo um índice de 8 bits por pixel.
Acrescente transparência
Um canal alfa descreve a opacidade. Uma escala comum de 8 bits usa 0 para totalmente transparente e 255 para totalmente opaco, com valores intermediários para transparência parcial. Acrescentar esse canal ao RGB de 24 bits resulta em RGBA de 32 bits. O alfa é separado do vermelho, verde e azul: um pixel totalmente transparente ainda pode ter valores de cor armazenados que não aparecem na imagem final.
Principais conclusões
- Uma imagem matricial armazena uma grade de valores de pixels.
- A profundidade de cor determina a quantidade de códigos de cor disponíveis por pixel.
- O RGB comum usa três canais de 8 bits, totalizando 24 bits.
- Um índice de paleta seleciona uma cor de uma tabela.
- Um canal alfa acrescenta informações de opacidade; um alfa de 8 bits transforma RGB em RGBA de 32 bits.
5.2 Calcular o armazenamento de imagens e vídeos
Os dados de pixels de uma imagem matricial sem compressão crescem conforme a quantidade de pixels e de bits por pixel. Manter as unidades em cada etapa ajuda a separar a quantidade de informação do tamanho em bytes informado por um visualizador de arquivos.
Calcule os dados de pixels
Use . Divida por 8 para obter bytes. Largura e altura devem ser multiplicadas porque cada linha contém toda a largura de pixels.
Para 1920 por 1080 com 24 bits por pixel, primeiro encontre 2.073.600 pixels. Multiplique por 24 para obter 49.766.400 bits e divida por 8 para obter 6.220.800 bytes. Isso equivale a cerca de 6,2 MB, ou 5,93 MiB. Mudar a unidade não muda os dados de pixels correspondentes.
Para 640 por 480 em escala de cinza de 8 bits, há 307.200 pixels. Oito bits cada fornecem 2.457.600 bits; dividir por 8 resulta em 307.200 bytes, cerca de 307 kB. Aqui, um byte por pixel faz a contagem final de bytes ser igual à contagem de pixels.
Preveja mudanças antes de calcular
Dobrar a largura dobra os pixels em cada linha. Dobrar a altura dobra as linhas. Dobrar as duas, portanto, multiplica por quatro a quantidade de pixels e o armazenamento. Aumentar a profundidade de 8 para 24 bits por pixel triplica o armazenamento na mesma resolução. Esses fatores se multiplicam se ambos mudarem.
O cálculo bruto fornece os dados de pixels, não necessariamente um arquivo de imagem completo. Um arquivo também armazena metadados, como largura, altura, profundidade de cor e formato. Uma foto pode registrar configurações da câmera, data e local. Tabelas de paleta, cabeçalhos, preenchimento e compressão também podem alterar o tamanho final em bytes.
Para profundidades abaixo de oito bits, calcule todos os dados em bits antes de converter. Uma imagem de 100 por 60 com um bit contém 6.000 bits de pixels, ou 750 bytes compactados. Tratar cada pixel como um byte superestimaria esses dados em oito vezes. Se um formato completar cada linha até um determinado limite, esse preenchimento deve ser acrescentado separadamente; ele não altera a profundidade de cor.
Amplie o cálculo para vídeo
Um vídeo apresenta uma sequência de imagens chamadas quadros. A 30 quadros por segundo, um vídeo RGB de 1920 por 1080 precisa de bytes de dados de imagem sem compressão por segundo, cerca de 187 MB/s. Multiplicar pela duração fornece o total de dados de imagem. O som acrescenta seu próprio armazenamento.
Essa taxa elevada explica por que arquivos de vídeo comuns são comprimidos. A taxa de um vídeo comprimido é uma grandeza distinta; ela não pode ser deduzida apenas da resolução.
Compare imagens matriciais e vetoriais
| Matricial | Vetorial |
|---|---|
| Armazena uma grade de valores de cor | Armazena formas e instruções de desenho |
| Adequada para fotografias e texturas | Adequada para logotipos, diagramas e contornos de fontes |
| Ampliar a grade revela os pixels | As formas podem ser redesenhadas em escala maior |
Um arquivo vetorial pode descrever uma linha de (0, 0) até (100, 50), ou um círculo por seu centro, raio e preenchimento. Ele não precisa armazenar um valor de cor separado para cada ponto dentro do círculo. Desenhos simples podem, portanto, ser pequenos. SVG é um formato vetorial comum.
Uma tela ainda precisa de pixels. A rasterização transforma as formas em uma grade de pixels no tamanho solicitado. Redimensionar instruções vetoriais preserva a geometria da forma; ampliar uma imagem matricial existente não pode recuperar detalhes que sua grade original nunca registrou.
Principais conclusões
- Os bits de uma imagem matricial sem compressão equivalem a largura × altura × bits por pixel.
- Divida os bits por 8 antes de informar os bytes.
- Dobrar as duas dimensões quadruplica os dados de pixels na mesma profundidade.
- Os dados brutos de imagem de um vídeo equivalem a bytes por quadro × taxa de quadros × duração.
- Metadados e compressão fazem o tamanho do arquivo diferir de um cálculo bruto de pixels.
- Gráficos vetoriais armazenam formas que são rasterizadas para exibição.
5.3 Amostrar som e calcular o tamanho do áudio
O som é uma vibração da pressão do ar. Um microfone o transforma em um sinal elétrico analógico que varia continuamente. Um conversor analógico-digital faz medidas regulares, chamadas amostras, e armazena cada uma como um número.
Separe o tempo do detalhamento da medida
A taxa de amostragem, medida em hertz, é a quantidade de amostras obtidas por segundo em cada canal. Uma taxa de 44.100 Hz é 44,1 kHz. CDs usam 44,1 kHz, trilhas sonoras de vídeo geralmente usam 48 kHz e o áudio telefônico tradicional usa 8 kHz. As amostras registram valores nesses instantes; elas não são um registro contínuo de todos os instantes entre eles.
A profundidade de bits determina quantos níveis cada amostra pode usar. Oito bits fornecem 256 níveis, 16 fornecem 65.536 e 24 fornecem 16.777.216. Arredondar uma medida para um nível é a quantização. A diferença em relação à medida original produz o erro de quantização, que pode ser ouvido como ruído. Mais bits fornecem níveis mais finos e reduzem esse erro.
A taxa de amostragem controla o detalhamento no tempo; a profundidade de bits controla o detalhamento da amplitude medida. Aumentar uma não substitui aumentar a outra.
Capte a faixa de frequências
O teorema da amostragem exige uma taxa de amostragem maior que o dobro da frequência mais alta captada. Para captar 20 kHz, a taxa deve superar 40 kHz. Exatamente o dobro é insuficiente para um sinal arbitrário no limite.
A 44,1 kHz, o limite teórico fica abaixo de 22,05 kHz. O intervalo acima de cerca de 20 kHz, o limite superior aproximado da audição humana, deixa espaço para um filtro contra sobreposição espectral. Frequências acima da metade da taxa de amostragem podem aparecer como frequências mais baixas falsas, fenômeno chamado de sobreposição espectral. Um conversor filtra essas frequências altas antes da amostragem.
Uma taxa de 44.100 Hz se aplica a cada canal, não à gravação como um fluxo combinado. O estéreo, portanto, armazena 88.200 valores de amostra por segundo. O fator de canais pertence à fórmula de armazenamento porque cada instante tem um valor esquerdo e um direito. Ele não dobra a frequência mais alta que cada canal pode captar; esse limite ainda depende da própria taxa de amostragem do canal.
Calcule o áudio sem compressão
Mono tem um canal; estéreo tem dois. O tamanho dos dados é
Para uma gravação estéreo de três minutos a 44.100 Hz e 16 bits, a taxa é bit/s. Multiplique por 180 segundos para obter 254.016.000 bits e divida por 8: 31.752.000 bytes, cerca de 31,8 MB.
Uma gravação mono de dez segundos a 8.000 Hz e 8 bits resulta em bits, ou 80.000 bytes. Uma gravação estéreo nas mesmas configurações usaria o dobro.
Escolha o que armazenar
Taxas e profundidades maiores exigem mais espaço. As configurações de CD geralmente são suficientes para ouvir; estúdios costumam usar 24 bits e 48 kHz ou mais para deixar margem para processamento e edição.
O MIDI registra instruções de notas: quais notas, quando começam, sua intensidade e as escolhas de instrumentos. Ele pode ser muito menor que uma execução amostrada, mas a reprodução depende dos sons de instrumentos disponíveis. O MIDI pode descrever a melodia de um cantor como notas; não pode conter a voz efetivamente gravada.
Principais conclusões
- A taxa de amostragem conta medidas por segundo; a profundidade de bits conta bits por medida.
- A quantização arredonda uma amostra para um dos níveis disponíveis.
- A taxa de amostragem deve superar o dobro da frequência mais alta captada.
- Filtros contra sobreposição espectral removem frequências altas antes da amostragem.
- Os bits de áudio equivalem a taxa de amostragem × profundidade de bits × canais × segundos.
- O MIDI armazena instruções de execução, não uma forma de onda gravada.
6Comprimir dados e escolher um formato
A compressão reduz os bits necessários para armazenar ou enviar dados. Alguns métodos substituem informações repetidas por descrições mais curtas que podem ser revertidas exatamente. Outros removem detalhes de imagens e sons para obter arquivos menores. Você acompanhará códigos simples, considerará as informações de que um decodificador precisa e escolherá um formato conforme o que deve ser preservado. Um arquivo destinado à edição ou à recuperação exata tem necessidades diferentes de uma transmissão final para ouvir ou assistir.
6.1 Códigos sem perdas e seus limites
A compressão sem perdas permite que a descompressão reconstrua exatamente os bits originais. Textos, arquivos de programas, planilhas e outros dados exatos precisam dessa propriedade. ZIP, PNG, GIF e FLAC são formatos sem perdas conhecidos. Eles exploram a redundância: informações repetidas ou previsíveis que têm uma descrição mais curta.
Descreva sequências repetidas
A codificação por comprimento de sequência, ou RLE, substitui símbolos idênticos consecutivos por uma contagem e pelo símbolo. A cadeia de 18 caracteres “AAAAAABBBCCCCCCCCD” torna-se “6A3B8C1D”, oito caracteres nessa convenção de contagem e símbolo. A decodificação expande cada par: seis As, três Bs, oito Cs e um D.
A mesma ideia é adequada para regiões de imagem com cores uniformes. A linha de pixels 0000000011110000 pode ser descrita como oito zeros, quatro uns e quatro zeros. Um arquivo real deve definir como contagens e símbolos são armazenados para que a decodificação seja inequívoca.
Sequências curtas podem fazer a RLE aumentar o tamanho. “ABCD” torna-se “1A1B1C1D”, dobrando a quantidade de caracteres antes de qualquer cabeçalho. A compressão só funciona quando a economia supera o custo de descrever o padrão.
Faça referência a uma sequência repetida
Um método de compressão por dicionário substitui uma sequência repetida por uma referência. Métodos da família LZ são a base de formatos como ZIP e PNG. Em “canto no mar canto”, a segunda ocorrência de “canto” pode ser substituída por uma instrução para voltar 13 caracteres e copiar cinco. Espaços contam como caracteres. O decodificador já tem o texto anterior e pode reproduzir a sequência a partir da referência.
Dê códigos mais curtos a símbolos comuns
Um código de comprimento variável usa diferentes quantidades de bits para diferentes símbolos. A codificação de Huffman constrói códigos a partir das frequências dos símbolos. Em “ABRACADABRA”, A aparece cinco vezes, B e R duas vezes cada, e C e D uma vez cada. Um código de largura fixa para cinco símbolos precisa de três bits por símbolo, ou 33 bits para onze letras.
Um código livre de prefixos adequado é A = 0, B = 10, R = 110, C = 1110 e D = 1111. Os dados codificados usam bits. A tabela de códigos acrescenta sobrecarga, então 23 bits, por si só, não são o tamanho completo do arquivo.
Livre de prefixos significa que o código de nenhum símbolo é o início do código de outro símbolo. Ler 0110, portanto, fornece A seguido de R sem precisar de separadores. Essa propriedade permite que um decodificador de Huffman reconheça um símbolo assim que seu código termina.
O decodificador precisa conhecer a convenção de codificação, além dos dados. Para uma sequência no estilo de Huffman, ele precisa do mapeamento de símbolos para códigos; para RLE, precisa distinguir uma contagem de um símbolo. Uma mensagem pequena pode economizar bits nos dados e ainda assim crescer no total quando essa descrição é incluída. Compare os tamanhos completos original e codificado ao decidir se um método realmente reduziu o arquivo.
Meça a economia e reconheça os limites
A razão de compressão é o tamanho original dividido pelo tamanho comprimido. Reduzir 6 MB para 2 MB resulta em 3:1. Use a mesma unidade nos dois lados.
Nenhum método sem perdas pode reduzir todos os arquivos possíveis. Existem entradas diferentes de n bits, mas apenas sequências de bits com menos de n bits. A recuperação exata exige que entradas diferentes continuem distinguíveis, então nem todas podem receber saídas mais curtas. Dados aleatórios e arquivos já comprimidos muitas vezes diminuem pouco ou aumentam por causa da sobrecarga acrescentada.
Principais conclusões
- A descompressão sem perdas reproduz exatamente os bits originais.
- A RLE descreve símbolos idênticos consecutivos com contagens.
- Métodos por dicionário substituem sequências repetidas por referências.
- A codificação de Huffman atribui códigos mais curtos usando as frequências dos símbolos.
- Um código livre de prefixos identifica os limites dos símbolos sem separadores.
- A razão de compressão compara o tamanho original com o tamanho comprimido.
- Nenhum método sem perdas reduz todas as entradas possíveis.
6.2 Formatos com perdas e escolhas de qualidade
A compressão com perdas remove informações para reduzir o tamanho do arquivo. A descompressão cria uma versão próxima do original, com alguns detalhes permanentemente ausentes. Fotografias, música, fala e vídeo podem tolerar perdas selecionadas que textos ou dados de programas exatos não podem.
Comprima imagens conforme a importância visual
O JPEG se baseia nas diferentes sensibilidades da visão humana a brilho, cor e detalhes finos. Um JPEG típico reduz a resolução dos detalhes finos de cor e arredonda detalhes finos da imagem representados em blocos de 8 por 8. Sua configuração de qualidade controla a intensidade do descarte de informações. Uma compressão maior pode produzir blocos aparentes, desfoque ou ondulações perto de bordas nítidas.
Uma fotografia muitas vezes pode alcançar cerca de 10:1 com pouca perda visível. Nessa razão, uma imagem com 6.220.800 bytes de dados brutos de pixels usaria cerca de 622.080 bytes comprimidos, aproximadamente 0,6 MB. A razão é um exemplo, não uma propriedade fixa de todo JPEG.
Comprima o som conforme o que pode ser ouvido
MP3 e AAC usam codificação perceptual. Um som baixo pode ser encoberto por um som mais alto em uma frequência próxima, então o codificador pode dedicar menos bits a informações que uma pessoa provavelmente não ouvirá. Um arquivo menor ainda pode soar muito próximo do original.
Para uma taxa de bits constante, o tamanho em bits é igual à taxa de bits multiplicada pela duração. A 128 kbit/s, uma gravação de três minutos precisa de bits, ou 2.880.000 bytes, cerca de 2,9 MB. Isso é cerca de um onze avos dos 1.411,2 kbit/s do áudio de CD sem compressão. A taxa comprimida já descreve o fluxo codificado; não a multiplique novamente pela profundidade de amostra original.
Explore semelhanças entre quadros de vídeo
Quadros vizinhos frequentemente mostram quase a mesma cena. Formatos de vídeo como H.264 e AV1 comprimem detalhes da imagem e descrevem muitos quadros por meio de mudanças ou previsões a partir de outros quadros. Isso remove informações repetidas ao longo do tempo e dentro de cada imagem.
Escolha o formato conforme o uso
| Uso | Escolha adequada | Motivo |
|---|---|---|
| Texto, código ou dados exatos | Arquivo compactado sem perdas | Cada bit deve ser preservado |
| Foto para compartilhamento | JPEG ou outro formato de imagem com perdas | Tamanho pequeno com perda visual aceitável |
| Captura de tela ou logotipo | PNG | Preserva bordas nítidas e cores uniformes |
| Música para transmissão | AAC, MP3 ou Opus | Economiza capacidade de transferência |
| Áudio mestre para arquivamento | FLAC | Recuperação exata das amostras de áudio |
Guarde um original sem perdas para edições futuras. Decodificar e recodificar repetidamente com perdas pode acrescentar perda por gerações sucessivas. Converter um JPEG que já tem perdas para PNG preserva seus pixels decodificados atuais, mas não pode restaurar detalhes removidos anteriormente.
Uma compressão maior pode custar qualidade, tempo de processamento ou ambos. A escolha adequada depende do conteúdo do arquivo e de como ele será usado; o menor arquivo nem sempre é o mais útil.
Principais conclusões
- A compressão com perdas remove permanentemente informações selecionadas.
- O JPEG explora a sensibilidade visual; o áudio com perdas usa codificação perceptual.
- O tamanho de um fluxo comprimido segue taxa de bits × duração.
- Guarde um original sem perdas quando edições futuras ou recuperação exata forem importantes.
- Mudar um arquivo com perdas para um formato sem perdas não recupera informações descartadas.
Exercícios resolvidos de Representação binária e de dados
1Construir um código e depois ler seus bits
12 passos
- 1IntroduçãoUm padrão, várias leituras
Um padrão armazenado tem duas características distintas: quantos bits ocupa e como quem o lê os interpreta. Os oito bits 01000001 podem significar um número, um caractere de texto ou uma intensidade de cor.
Primeiro escolheremos bits suficientes para distinguir uma coleção de valores e depois leremos um padrão numérico usando valores posicionais binários e hexadecimal. Mudar a notação muda o que você escreve, mantendo o valor intacto.
- 2ExplicaçãoConte as possibilidades por duplicação
Cada bit tem duas possibilidades, então cada bit acrescentado dobra a quantidade de padrões. Dois bits fornecem 00, 01, 10 e 11; três bits fornecem oito padrões. Em geral, n bits geram padrões.
Para identificar 26 letras, quatro bits não bastam porque geram apenas 16 padrões. Cinco bits geram 32 e deixam seis padrões sem uso. Um código não precisa usar todos os padrões disponíveis.
- 3DesafioEscolha um campo para categorias
Um dispositivo deve distinguir 90 categorias. Qual é a menor quantidade de bits capaz de codificá-las? Quantos padrões permanecerão sem uso?
---reveal---
Seis bits fornecem 64 padrões, uma quantidade insuficiente. Sete fornecem 128, então o campo precisa de sete bits e deixa 38 padrões sem uso. O maior identificador numérico poderia ser 89 se os identificadores começassem em zero; esse extremo é diferente da contagem de 90 categorias.
- 4ConexãoObserve se a letra da unidade é maiúscula ou minúscula
Um byte tem oito bits. Por isso, importa se a letra da unidade é maiúscula ou minúscula: b significa bit e B significa byte. Um enlace de 40 Mbit/s tem um limite ideal de dados úteis de 5 MB/s antes da sobrecarga de controle.
Os prefixos das unidades também importam. Um MB significa um milhão de bytes, enquanto um MiB significa 1.048.576 bytes. Converter uma quantidade armazenada de MB para MiB muda a leitura numérica sem remover dados.
- 5ExplicaçãoAlinhe as posições binárias
A posição inteira mais à direita vale 1. Indo para a esquerda, temos 2, 4, 8, 16, 32, 64 e assim por diante. Um 1 seleciona uma posição e um 0 a deixa de fora.
Para 101101, os valores posicionais selecionados são 32, 8, 4 e 1, totalizando 45. Zeros à esquerda podem preencher uma largura sem mudar essas posições. A ausência de um zero dentro do padrão deslocaria alguns dígitos e mudaria o valor.
- 6ExemploSelecione as potências para 156
A maior potência de dois que não ultrapassa 156 é 128. Subtraia-a para obter 28. Os valores posicionais 64 e 32 não cabem, então atribua zeros a eles.
Subtraia 16 de 28, restando 12. Subtraia 8, restando 4, e depois subtraia 4 para chegar a zero. As duas últimas posições, 2 e 1, recebem zeros. Nas posições de 128 a 1, os bits são 10011100. Manter cada posição não utilizada impede que as potências escolhidas sejam deslocadas.
- 7DicaInverta a ordem dos restos da divisão de inteiros
Divisões sucessivas são outra forma de chegar ao mesmo padrão. Dividir um número inteiro por dois fornece seu último bit como resto. Dividir o quociente encontra o próximo bit à esquerda.
Para 156, os restos aparecem como 0, 0, 1, 1, 1, 0, 0, 1. Leia do último para o primeiro para obter 10011100. A ordem inversa é necessária porque a divisão encontra primeiro a posição menos significativa.
- 8DesafioConverta e confira um novo valor
Escreva o decimal 109 em oito posições binárias e depois use seu resultado para explicar se 109 é ímpar.
---reveal---
As potências escolhidas são 64, 32, 8, 4 e 1, então o padrão é 01101101. Sua soma é 109, o que confirma a conversão. O último bit é 1; todas as outras posições contribuem com quantidades pares, resultando em um número inteiro ímpar. O zero à esquerda preenche o byte sem mudar o valor.
- 9ExplicaçãoSubstitua grupos de quatro bits por dígitos hexadecimais
O hexadecimal tem dezesseis dígitos: 0–9 seguidos de A–F para os valores de dez a quinze. Quatro bits também distinguem dezesseis padrões, então cada dígito hexadecimal representa um grupo de quatro bits.
Divida 10011100 em 1001 e 1100. O primeiro grupo é nove e o segundo é doze, escrito como C. O resultado é 0x9C. O hexadecimal é quatro vezes mais curto que o binário em quantidade de dígitos, mantendo uma ligação direta com os grupos dentro do byte.
- 10ExemploAgrupe um padrão curto a partir da direita
Para converter 101101, forme grupos a partir da direita: 10 e 1101. Complete o grupo da extremidade esquerda até 0010. Os grupos agora fornecem os dígitos hexadecimais 2 e D, então o valor é 0x2D.
Confira usando valores posicionais hexadecimais: dois grupos de dezesseis mais treze unidades resultam em 45. Agrupar a partir da esquerda colocaria o último grupo curto na posição errada. Em uma expansão hexadecimal completa, cada dígito deve manter os quatro bits.
- 11DesafioRelacione bits, largura e hexadecimal
Um campo sem sinal de largura fixa armazena 0xB4. Quantos bits são mostrados por seus dois dígitos hexadecimais, qual é seu padrão binário e qual valor decimal ele contém?
---reveal---
Dois dígitos hexadecimais representam oito bits. B se expande em 1011 e 4 em 0100, então o byte é 10110100. Seus valores posicionais selecionados somam 128 + 32 + 16 + 4 = 180. De forma equivalente, onze grupos de dezesseis mais quatro resultam em 180.
- 12RecapitulaçãoTrês verificações para um valor armazenado
Verifique capacidade, notação e unidades separadamente. Um campo precisa de padrões suficientes para todos os seus valores possíveis. O binário seleciona potências de dois; o hexadecimal agrupa esses bits de quatro em quatro a partir da direita.
O valor armazenado permanece o mesmo com uma mudança da base escrita ou da unidade de armazenamento. Uma mudança na interpretação dos dados pode dar aos mesmos bits um significado diferente, então o padrão e a regra para lê-lo devem ser considerados juntos.
2Ler valores com sinal e preservar sua largura
11 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoUma largura precisa de uma interpretação
- 2ExplicaçãoReserve um padrão para zero
- 3ExemploAcompanhe o retorno cíclico sem sinal
- 4DesafioEscolha espaço suficiente para uma contagem
- 5ExplicaçãoAtribua um peso negativo ao bit inicial
- 6ExemploComece o padrão para −45
- 7ExemploComplete a negação
- 8DesafioCodifique outro inteiro negativo
- 9Ideia-chaveEstenda o sinal, não apenas os zeros
- 10DesafioAumente a largura antes de obter o oposto
- 11RecapitulaçãoMantenha a regra junto ao padrão
3Construir uma codificação em ponto flutuante
17 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoUm valor e uma escala
- 2ExplicaçãoLeia as posições fracionárias
- 3ExemploGere uma fração finita
- 4Ideia-chavePreveja se os dígitos terminam
- 5DesafioEncontre a escala em ponto fixo
- 6ExplicaçãoReconheça os campos
- 7ExemploEscreva 6,25 em binário
- 8ExemploCodifique o expoente
- 9ExemploArmazene apenas a fração
- 10ExemploJunte os três campos
- 11DesafioDecodifique outro valor normal
- 12DicaClassifique primeiro os padrões reservados
- 13ExplicaçãoSepare faixa de representação de espaçamento
- 14Ideia-chaveObserve o intervalo crescer
- 15DesafioArredonde um inteiro no ponto médio
- 16DesafioEscolha um tipo para uma quantia exata
- 17RecapitulaçãoLeia o formato antes do valor
4Acompanhar o texto dos caracteres aos bytes
12 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoO texto precisa de um acordo
- 2ExplicaçãoEncontre o código de caractere ASCII
- 3ExemploCodifique letras e pontuação
- 4DesafioRecupere um dígito numérico
- 5ConexãoPor que um único byte não era suficiente
- 6ExplicaçãoIdentifique antes de codificar
- 7ExemploDivida os bits de é
- 8ExemploComplete os dois bytes codificados
- 9DesafioConte uma cadeia com sistemas de escrita diferentes
- 10Ideia-chaveUma aparência pode ter duas formas
- 11DesafioIdentifique a palavra corrompida
- 12RecapitulaçãoMantenha três contagens separadas
5Estimar o armazenamento de imagens e gravações
15 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoConte os valores e depois os bits por valor
- 2ExplicaçãoConstrua um pixel RGB
- 3ConexãoAcrescente transparência ou use uma paleta
- 4DesafioLeia uma cor e sua profundidade
- 5ExemploComece pela grade de pixels
- 6ExemploConverta a imagem em bytes
- 7DesafioRedimensione a grade e acrescente quadros
- 8Ideia-chaveUm desenho pode armazenar instruções
- 9ExplicaçãoAmostre o tempo e a amplitude separadamente
- 10ExplicaçãoFiltre antes de amostrar
- 11ExemploEncontre primeiro a taxa de áudio
- 12DesafioCalcule uma gravação diferente
- 13ConexãoNotas podem substituir uma forma de onda
- 14DesafioCompare duas mudanças de armazenamento
- 15RecapitulaçãoMantenha os fatores e as unidades visíveis
6Comprimir sem confundir tamanho e fidelidade
12 passos
Salve esta aula para seguir cada Lição Interativa passo a passo.
- 1IntroduçãoDuas maneiras de obter um arquivo menor
- 2ExplicaçãoSubstitua sequências por contagens
- 3DesafioExperimente sequências longas e curtas
- 4ConexãoAponte para uma sequência já vista
- 5ExemploAtribua códigos curtos a símbolos frequentes
- 6DesafioDecodifique o fluxo em ordem
- 7Ideia-chaveAlgumas entradas precisam continuar grandes
- 8ExplicaçãoRemova detalhes de mídia menos perceptíveis
- 9ExemploUse diretamente uma taxa de bits comprimida
- 10DesafioProteja um original mestre ao compartilhar uma cópia
- 11DesafioCompare uma razão com um limite de transferência
- 12RecapitulaçãoAjuste a garantia à finalidade
Questões de Representação binária e de dados
Conjunto 1: Ler padrões e estimar armazenamento10 Questões de Prática
Questão 1 de 10
Mostrar respostaOcultar resposta
Questão 2 de 10
Mostrar respostaOcultar resposta
Questão 3 de 10
Mostrar respostaOcultar resposta
Questão 4 de 10
Mostrar respostaOcultar resposta
Questão 5 de 10
Mostrar respostaOcultar resposta
Questão 6 de 10
Mostrar respostaOcultar resposta
Questão 7 de 10
Mostrar respostaOcultar resposta
Questão 8 de 10
Mostrar respostaOcultar resposta
Questão 9 de 10
Mostrar respostaOcultar resposta
Questão 10 de 10
Mostrar respostaOcultar resposta
Conjunto 2: Aplicar formatos e calcular tamanhos de dados10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Conjunto 3: Interpretar os mesmos bits de maneiras diferentes10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Conjunto 4: Identificar erros e relacionar representações10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Conjunto 5: Combinar limites, codificações e escolhas de tamanho10 Questões de Prática
Salve esta aula para ver todas as respostas e praticar cada conjunto.
Questão 1 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 2 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 3 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 4 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 5 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 6 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 7 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 8 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 9 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Questão 10 de 10
Mostrar respostaOcultar resposta
Salve esta aula para ver esta resposta.
Travou em uma questão sua? Ajuda com Tarefas
Termos-Chave
A
Amostra
Arredondamento de empates para o par
Artefato de compressão
ASCII
B
Base
Bit
Bit de sinal
Bit implícito
Bit mais significativo
Bit menos significativo
Byte
C
Canal alfa
Caractere de controle
Codificação
Codificação de Huffman
Codificação perceptual
Codificação por comprimento de sequência (RLE)
Código de caractere
Código livre de prefixos
Complemento de dois
Compressão
Compressão com perdas
Compressão sem perdas
D
Dígito hexadecimal
E
Erro de arredondamento
Estouro (overflow)
Expansão binária finita
Extensão de sinal
F
Faixa de representação
G
Gráficos vetoriais
Grupo de quatro bits (nibble)
I
IEEE 754
Imagem matricial (bitmap)
Inteiro sem sinal
L
Largura fixa
M
Metadados de imagem
Método de compressão por dicionário
MIDI
N
NaN (não é um número)
Negação aritmética
Normalização
Notação posicional
P
Página de códigos
Paleta de cores
Perda por gerações sucessivas
Pixel
Ponto de código
Ponto fixo
Ponto flutuante
Precisão
Prefixo 0x
Prefixo binário da IEC
Prefixo do SI para unidades de armazenamento
Profundidade de bits do áudio
Profundidade de cor
Q
Quadro
Quantização
R
Rasterização
Razão de compressão
Redundância
Resolução
Retorno cíclico (wraparound)
RGB
S
Separador binário
Significando (mantissa)
Sinal analógico
Sinal e magnitude
Sistema binário
Sistema hexadecimal
Sobreposição espectral (aliasing)
Subfluxo (underflow)
T
Taxa de amostragem
Taxa de bits
Teorema da amostragem
Texto corrompido por erro de codificação (mojibake)
Tipo de dado
U
Unicode
UTF-8
UTF-16
V
Valor subnormal
Viés do expoente
Sobre esta aula
Crie seus próprios Materiais de Estudo
Transforme suas anotações, slides e documentos em Guias de Estudo, Questões de Prática, Flashcards e mais 6 ferramentas.