Casa de Maurício (de Nassau), na cidade de Haia, na Holanda É A Lição de Anatomia do Dr. Nicolaes Tulp, (1632) . Pintura a óleo de Rembrandt, no Museu Mauritshuis (Casa de Maurício)
em madeira, 1596/7 Fui ao MASP, em São Paulo, ver a exposição de Caravaggio. A cabeça da Medusa, com as serpentes, é apavorante. Mas eu não petrifiquei!
pela Av. Paulista e procurem as Livrarias. Ouçam a OSESP na Sala São Paulo, apreciem a arquitetura da Catedral da Sé. Almocem no Mercado Municipal, ...
entende. Os significados são cadeias de bits (0’s e 1’s), que o processador entende. Essas codificações 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. Teclado: 3 folhas de laminado plástico. Duas com circuitos impressos. A 3ª isola essas duas e possui furos sob cada tecla Numa “fios” direção; na outra os fios são transversais
teclado que é 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) recebem essa cadeia UNICODE e a transforma em um número computável. Vamos entender como.
é a parte inteira de y e 1 ⋯ ⋯ a parte fracionária de y. Qualquer número ∈ ℝ pode ser representado na forma decimal = ± ⋯ 1 0 . 1 ⋯ ⋯, com , ∈ = 0,1,2, ⋯ , 9 . Sabemos que:
/10 + ⋯ = lim →∞ 10− =1 = lim →∞ 10− =1 Já a parte fracionária não é, necessariamente, uma soma. Trata-se de uma série - o limite de uma sequência de somas parciais:
por uma potência de 10 resulta em deslocar (flutuar) o separador decimal ao longo da representação decimal do número. Look at the floating point Ponto-flutuante porquê:
k ∗ 10 exp Sinal Expoente Fração Fator de escala As quatro características fundamentais: Realmente trabalharemos com uma fração (número racional), pois o número de casas decimais é finito.
Fator de escala No computador as quatro características fundamentais permanecem: A diferença é que a fração e o expoente serão números binários. E o fator de escala será 2.
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
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 e, diz a lenda, eles mataram por isso.
Nicolaes Tulp para abertura desta lição não é por acaso. É uma indicação artística de que, agora, passaremos a dissecar a representação IEEE 754/2008 em Python/NumPy.
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).
a 2 é ele mesmo: 0000 0011. O que é armazenado em Single é 0000 0011 + 0111 1111 = 1000 0010. É o mesmo que converter 130 = 127+3, para a base 2. Já, se o expoente é -3, seu complemento a 2 é 1111 1101. Então em Single é armazenado 1111 1101 + 0111 1111 = 0111 1100. É o mesmo que converter 124 = 127 – 3 para a base 2 (que tem só 7 dígitos) e acrescentar um 0 na frente.
< 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 O padrão Single
< 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 O padrão Double
na base 2 de um número entre 0 e 1, escrito na base 10, pode ser descrito por: Multiplique o número dado sucessivamente por 2 e vá coletando os “vai 0” ou “vai 1”. Algoritmo?
do número racional é uma seqüência periódica – uma “bí”zima periódica Para números racionais, o algoritmo de conversão descrito na transparência anterior só termina em um número finito de passos quando o número é uma potência (negativa) de 2 ou uma soma de potências (negativas) de 2. Gerando “bi”zimas periódicas.
vírgula geram dízimas periódicas na base 2 Construí um programa Python que recebe um número entre zero e um, escrito na base 10, com apenas uma casa decimal após a vírgula, e o converte para a base dois. 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
quantas casas decimais?” Em matemática: qual o valor de k para o qual: 10 = 224 Resolvendo a equação acima encontramos = 24 ∗ 10 2 = 24 ∗ 0.301030 = 7.224719 ≅ 7 Continuo não entendendo!
0.25 10 ....... 0.50 11 ....... 0.75 f No Toy 2, são 24 = 16 e no Single são 223 = 8.388.608 frações possíveis No Toy 1 as frações possíveis são as 22 = 4 abaixo:
(-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 = Nos dois padrões Toy a regra de decodificação é quase a mesma. Isto pq. a condicional sobre o expoente é a mesma (eles são iguais!). A diferença reside só nas frações.
2. para baixo e outro de y = 2. para cima. Tem razão Surfista, é porque para cada grupo de 4 números de Toy 1 o fator de escala muda(*) numa potência de 2: 2-2, 2-2, 2-1, 20, 21, 23 e 24. (*) Exceto na transição dos de-normalizados para a 1ª faixa normal, em que é o mesmo.
= 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 ?
é 1 . 0000 0000 0000 0000 0000 001 Assim = 1 223 ≅ 1.1920928955078125 ∗ 10−7 4 8 12 16 20 23 posição No Toy 2, o 1º número após 1.0 é 1.0001 2 e então 2 = 1/24 = 0.0625.