entende. Os significados são cadeias de bits (0’s e 1’s), que o processador entende. Começaremos olhando para codificações. Elas são como dicionários: uma lista de símbolos, cada um com seu significado.
um sinal elétrico para um chip, que o transforma em UNICODE. Dentro do teclado: 3 folhas de laminado plástico. Duas com circuitos impressos. A 3ª isola essas duas e possui furos sob cada tecla Numa “fios” na direção longitudinal; na outra os fios são transversais
recebido pelo chip (lá no canto superior direito); 2. O chip codifica os símbolos digitados para UNICODE e os envia sequencialmente para o processador; 3. O processador e/ou a PVM (Python Virtual Machine) , ou JVM (Java Virtual Machine) ou a .net (da Microsoft) recebem essa cadeia UNICODE e a transformam em um número computável.
• 1.25 = 125/100 • 3.1415 = 3 × Τ 1415 10000 = = Τ 4245 10000 Ah, Surfista, como fração decimal todos sabemos! O Galileu está falando da forma fracionária simplificada. Observe as duas aproximações de π.
a uma faixa Frações de tamanho finito Representações finitas de cadeias de 0’s e 1’s, os bits. Tanto na fração como no expoente! É a finitude no computador digital
(e na Câmara de vereadores do Rio). O computador - maior instrumento tecnológico da humanidade - obriga-nos a um retorno aos Pitagóricos. Lembrem-se, na Escola de Pitágoras só eram permitidas as frações, os incomensuráveis eram proibidos . Existe até a lenda de que eles mataram por isso.
representação computacional de ponto flutuante nas implementações tanto de software como de hardware. Vamos ao padrão IEEE 754/2008. Então vá vestir um smoking!
formatos: Acrescente o bit escondido na fração! O padrão IEEE 754/2008: Os formatos binários adotados no padrão IEEE 754/2008 são definidos por uma terna (s, e, f ) cujos valores estabelecem a quantidade de bits para cada campo da representação binária de ponto flutuante normalizada do número: • s campo do sinal; • e campo do expoente; • f campo da fração (ou mantissa).
converta 130 = 127 + 3 para a base 2. O expoente será 1000 0010, uma cadeia com 8 bits. Já, se o expoente é −3, converta 124 = 127 – 3 para a base 2. O expoente será 111 1100, uma cadeia com 7 bits. Depois, acrescente um 0 à frente para formar uma cadeia de 8 bits: 0111 1100
bias será maior que 127 e sua representação binária sempre possuirá um 1 na frente. E se ele for negativo, a soma com o bias será menor que 127 e sua representação binária possuirá 7 bits ou menos. Então precisaremos acrescentar zeros á frente até formar 8 bits..
< 255 (-1)s ∗ 2e-126 ∗ (0.f) ... se e = 0 e f ≠ 0 (-1)s ∗ 0 ....................... se e = 0 e f = 0 (-1)s ∗ Inf ................... se e = 255 e f = 0 NaN ............................ se e = 255 e f ≠ 0 x = s e f A conversão binário-decimal no padrão Single segue a regra:
< 2047 (-1)s ∗ 2e-1022 ∗ (0.f) ... se e = 0 e f ≠ 0 (-1)s ∗ 0 ....................... se e = 0 e f = 0 (-1)s ∗ Inf ................... se e = 2047 e f = 0 NaN ............................ se e = 2047 e f ≠ 0 x = s e f A conversão binário-decimal no padrão Double segue a regra:
10−12 metros. Se cada ser humano tivesse o tamanho de um átomo de hidrogênio, em 1978, formaríamos uma fila de 32,8 cm. O mesmo comprimento da fila de Singles, se cada um deles também tivesse o tamanho de um átomo.
1,84 ∗ 1019 números. Se cada Double também tivesse o tamanho de um átomo de hidrogênio, a fila teria 1,41 milhões de km, o equivalente a 3,67 viagens da Terra à Lua.
(-1)s ∗ 2e-2 ∗ (0.f) .... se e = 0 e f ≠ 0 (-1)s ∗ 0 .................... se e = 0 e f = 0 (-1)s ∗ Inf ................ se e = 7 e f = 0 NaN ......................... se e = 7 e f ≠ 0 x = Construímos o padrão Toy IEEE para visualizar os números no computador. Nele, a regra de decodificação é semelhante à dos outros.
de y = 2. para baixo e outro de y = 2. para cima. Sim, para cada grupo de 4 números do Toy IEEE o fator de escala muda numa potência de 2: 2-2, 2-2, 2-1, 20, 21, 23 e 24.
= 26. > +, • 7.∗ 8. = 56. > +. Então, ao executar um programa, o sistema IEEE 754 informará que essas operações resultam em NaN teremos como evitar uma travada na sua execução! Mestre, então qual a razão dos NaN existirem ?
representação do IEEE 754, Single, Double, Quad ou Toy IEEE. E, o domínio, o conjunto ℝ dos números reais. O nome de batismo escolhido para essas funções será de float, mais um qualificativo.
< + são classificados como normais. São os “números reais” com os quais operamos normalmente nos computadores. + e − são os limitantes superior e inferior do padrão IEE 754 – são “divisores de águas”. Eles correspondem aos números reais 2 e −2 respectivamente.
São entidades incluídas no padrão IEEE 754 para tratamento de exceções. Não são passíveis das operações aritméticas elementares. Números reais cujo expoente 2 ≥ são números grandes demais para serem incluídos na representação padrão IEEE 754.
computar. Sempre atento Filósofo! Os NaN, + e – não estão no IEEE 754 para efetuarmos continhas com eles. Computar = efetuar as operações aritméticas básicas
ponto flutuante de a partir de um certo dígito. Uma forma de aproximar um número já na base 2 e normalizado, por um número ∗ do IEEE 754 é por truncamento.
Bits da fração de x TRUNCAR significa desprezar todos esses bits de x! • Toy IEEE .. 2 bits • Single ........ 23 bits • Double ....... 52 bits • Quad .......... 112 bits A representação binária normalizada de e o nº de bits a manter na fração para obter ∗
Toy IEEE entre e zero, não o mais próximo. Idem, ibidem, para os outros sistemas IEEE (Single, Double e Quad). ∗ Para ir de para ∗ caminhamos em direção ao zero. Inclusive quando é negativo.
atenção no exemplo: Truncando 2.38 obtemos 2.3 e truncando −2.38 obtemos −2.3, ambos mais próximos de zero (Note que −2.3 > −2.38). Assim, ao truncar, você sempre “caminha” em direção ao zero. Mas, se no truncamento “perdemos” dígitos então ∗ ≤ , de forma que ∗ sempre estará à esquerda de , na reta real.
Quad ? Os números ∈ ℝ aos quais poderemos associar um NÚMERO ∗ ∈ , via truncamento, são aqueles situados no intervalo (−, +). No Toy IEEE, o intervalo (-16,+16). +Inf
2.0 1.75 1.5 0.1875 0.3125 0.375 0.4375 0.87 5 0.0 1.25 0.75 0.25 0.5 0.625 0.0625 0.125 2.5 2.0 1.75 1.5 0.1875 0.3125 0.375 0.4375 0.875 0.0 1.0 Portanto, o gráfico da função ∶ ℝ → é o de uma função escada. A figura só mostra a parte inferior do gráfico. Lá embaixo, os de- normalizados, em amarelo.
querida, veja as distâncias entre 2.0 e 2.5 na 1º e entre 3.0 e 3.5 na 2°. E para ∈ ℝ, ≤ 0, o gráfico de f l é o reflexo desse com relação aos eixos-x e y.
< , é válida para qualquer sistema de ponto flutuante IEEE 754, quando usamos truncamento para ∈ −, + , na faixa normal. Essa desigualdade é óbvia, já que (∗) é a distância entre ∗ e o elemento seguinte de Toy IEEE.
truncamento. Existem outras possibilidades, entre elas o arredondamento. Loirinhas, Surfistas e Cabelos de Fogo, procurem informações sobre arredondamento em livros ou na Internet e façam a tarefa que o Tio vai mandar.
significa arredondar. 2. Qual é o e a ULP(x) no arredondamento? 3. Reconstruam o gráfico ∶ ℝ → , usando o arredondamento no lugar do truncamento. 4. Provem os dois teoremas fundamentais de ponto flutuante para arredondamento.
existem números reais no computador! • Representação binária de ponto-flutuante. • O IEEE e o padrão IEEE 754/2008. • Os tipos e campos do padrão de ponto flutuante. • Visões do todo: uma reta furadinha e comparações. • Um sistema de brinquedo - Toy System. • O total de números no Toy. • Desenhando o Toy e vendo o fator de escala. • As definições de “épsilon” e ULP. • A função truncamento : ℝ → . • O gráfico de é o de uma função escada. • O teorema fundamental da representação de ponto flutuante IEEE 754/2008 e um corolário. • Exercício: refaçam tudo com arredondamento. Eis o que vimos neste conjunto de transparências. Foi dedicado ao estudo de números no computador.