+flaviorn2005 Infelizmente não vou saber te ajudar com isso =( docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html#689 Talvez isso te ajude? Realmente não sei
+Carlos Eduardo Marciano, poderia dar um exemplo com números de ponto flutuante negativos no padrão IEEE-754 ? Para o vídeo ficar perfeito só faltou esse datalhe, valeu pela ajuda.
Ótimo vídeo, me ajudou pacas, mas cara(me corrija se eu estiver errado) aos 2:31 o "2" não seria elevado à 10 ao invés de 1? Aí com o 127 se tornando 137?
Quando o número pode ser representado de maneira exata, sim, o restante da mantissa é preenchido por zero. No entanto, o 2.3 do exemplo possui uma dízima periódica na mantissa. Logo, esta dízima é repetida infinitas vezes, até lotar os bits disponíveis para ela. O computador, então, não guarda exatamente 2.3, mas sim 2.2999999523162841796875
Vamos por partes: VALOR DA MANTISSA: A mantissa do exemplo é 001001... Em decimal, isto é 0x(1/2) + 0x(1/4) + 1x(1/8) + 0x(1/16) + 0x(1/32) + 1x(1/64) + ... Esta soma infinita dá em torno de 1.14999, e a precisão depende de onde você irá parar de somar. Em float, você para em 23 termos/bits. Em double, são 53, garantindo mais precisão (porém usando mais memória). MULTIPLICANDO PELO EXPOENTE: Além disso, neste exemplo, o expoente do IEEE-754 é igual a 1. Logo, multiplicamos 1.14999 por 2^1, e o computador obtém uma boa aproximação para 2.3. Não há nenhuma maneira de guardar o número exato pelo padrão IEEE-754, pois é impossível achar uma combinação de 0s e 1s pra aquela soma infinita ali tal que o valor seja precisamente 2,3. Se existisse, aí sim o restante da mantissa seria preechida por zero.
você nao deveria " dar shifts para direita " e no caso uniria a parte inteira com a decimal ( passando a virgula para direita até o fim ) ? pq no caso , você não usou a parte inteira na mantissa , só a decimal
Por esse método do vídeo, o correto é usar apenas a parte decimal mesmo pra realizar aqueles cálculos de x2 e, depois, uni-la diretamente à parte inteira e ficar dando shifts até o número binário ficar normalizado.
Sim! Essa é a maneira como a maioria dos computadores guarda números como 3,15 ou qualquer outro decimal, ao qual chamamos de "tipo float". Há uma maneira de representar números com ainda mais casas decimais, cuja ideia é exatamente essa do float só que com mais bits (64 ao invés dos 32).
Oi André! Você diz no caso de converter 1,25 por exemplo? Em casos assim, o número já estará normalizado e portanto o expoente é 0. Quando vamos escrever o expoente, ficamos com 0+127=127. Portanto, basta colocar 127 em binário no campo do expoente. O 1,25 por exemplo fica: 0 01111111 01000000000000000000000
Basta seguir o procedimento mostrado no vídeo. A mantissa em decimal é 0,25, aí você fica multiplicando por dois e pegando as mantissas subsequentes: 0,25 x2 -> 0,5 -> Coloca um 0 0,5 x2 -> 1,0 -> Coloca um 1 0,0 x2 -> 0,0 -> Coloca um 0 E isso vai repetir infinitamente, formando a mantissa em binário
Não tem problema pensar que a parte que não repete é 01 e a parte que repete é 0011. O resultado final da mantissa ficaria o mesmo (0100110011...) Porém, caso vc continue montando a tabela a partir de onde eu parei, vc verá que a repetição começa a partir do primeiro 1 e, portanto, a repetição é 1001. É uma questão de perceptiva: o resultado é o mesmo.
EU TE AMO FOI O ÚNICO QUE EXPLICOU DIREITO SALVOU DEMAIS
Tenho prova amanhã e n tava conseguindo entender essa matéria. Consegui aprender no seu vídeo simples de 3 minutos. Mt obg mano
Obrigado!! Fico feliz que tenha ajudado!
Muito bom o vídeo, consegui entender finalmente o ponto flutuante...
Ótimo vídeo , simples e direto
Muito Obrigado pelo video!!!
Parabéns. estava precisando de uma aula dessa em português.
+flaviorn2005 Obrigado! Que bom que ajudou!
+Carlos Eduardo Marciano amigo vc teria como me ajudar em uma dúvida? eu nao consigo entender a calcular o ulp.
+flaviorn2005 Infelizmente não vou saber te ajudar com isso =(
docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html#689
Talvez isso te ajude? Realmente não sei
cara, clareou muita coisa para mim
Simples e rádido. Vlw
me salvou demais mano
ÓTIMO
Valeuuu!
+Carlos Eduardo Marciano, poderia dar um exemplo com números de ponto flutuante negativos no padrão IEEE-754 ? Para o vídeo ficar perfeito só faltou esse datalhe, valeu pela ajuda.
Futuramente levarei isso em conta! Obrigado!
Ótimo vídeo, me ajudou pacas, mas cara(me corrija se eu estiver errado) aos 2:31 o "2" não seria elevado à 10 ao invés de 1? Aí com o 127 se tornando 137?
Heróis que não usam capa
cara, na mantissa quando vc termina de escrever o numero da notação cientifica, os bits restante são preenchidos apenas por zeros, não?
Quando o número pode ser representado de maneira exata, sim, o restante da mantissa é preenchido por zero. No entanto, o 2.3 do exemplo possui uma dízima periódica na mantissa. Logo, esta dízima é repetida infinitas vezes, até lotar os bits disponíveis para ela. O computador, então, não guarda exatamente 2.3, mas sim 2.2999999523162841796875
Vamos por partes:
VALOR DA MANTISSA:
A mantissa do exemplo é 001001...
Em decimal, isto é 0x(1/2) + 0x(1/4) + 1x(1/8) + 0x(1/16) + 0x(1/32) + 1x(1/64) + ...
Esta soma infinita dá em torno de 1.14999, e a precisão depende de onde você irá parar de somar. Em float, você para em 23 termos/bits. Em double, são 53, garantindo mais precisão (porém usando mais memória).
MULTIPLICANDO PELO EXPOENTE:
Além disso, neste exemplo, o expoente do IEEE-754 é igual a 1. Logo, multiplicamos 1.14999 por 2^1, e o computador obtém uma boa aproximação para 2.3. Não há nenhuma maneira de guardar o número exato pelo padrão IEEE-754, pois é impossível achar uma combinação de 0s e 1s pra aquela soma infinita ali tal que o valor seja precisamente 2,3. Se existisse, aí sim o restante da mantissa seria preechida por zero.
@@carloseduardomarciano1395 mano, explicou muito bem. Obrigado ^^
Como converter o zero pra IEEE 754?
você nao deveria " dar shifts para direita " e no caso uniria a parte inteira com a decimal ( passando a virgula para direita até o fim ) ? pq no caso , você não usou a parte inteira na mantissa , só a decimal
Por esse método do vídeo, o correto é usar apenas a parte decimal mesmo pra realizar aqueles cálculos de x2 e, depois, uni-la diretamente à parte inteira e ficar dando shifts até o número binário ficar normalizado.
isso é usado na computação?
Sim! Essa é a maneira como a maioria dos computadores guarda números como 3,15 ou qualquer outro decimal, ao qual chamamos de "tipo float". Há uma maneira de representar números com ainda mais casas decimais, cuja ideia é exatamente essa do float só que com mais bits (64 ao invés dos 32).
O valor sempre será multiplicado por 2, e se sim pq?
Na hora de calcular a mantissa? Isto é apenas um macete para descobri-la de maneira rápida e eficiente
Se o numero nao tiver nenhum expoente como devo proceder ?
Oi André! Você diz no caso de converter 1,25 por exemplo? Em casos assim, o número já estará normalizado e portanto o expoente é 0. Quando vamos escrever o expoente, ficamos com 0+127=127. Portanto, basta colocar 127 em binário no campo do expoente. O 1,25 por exemplo fica:
0 01111111 01000000000000000000000
essa era exatamente minha duvida, mas por que a mantissa ficou "01000000000000000000000" neste exemplo??
Basta seguir o procedimento mostrado no vídeo. A mantissa em decimal é 0,25, aí você fica multiplicando por dois e pegando as mantissas subsequentes:
0,25 x2 -> 0,5 -> Coloca um 0
0,5 x2 -> 1,0 -> Coloca um 1
0,0 x2 -> 0,0 -> Coloca um 0
E isso vai repetir infinitamente, formando a mantissa em binário
Mas eo 1 que esta a frente do ,25 não seria seria 1 bit? então não ficaria 10100000000000000000000 ?
O repeating não seria 0011?
Não tem problema pensar que a parte que não repete é 01 e a parte que repete é 0011. O resultado final da mantissa ficaria o mesmo (0100110011...)
Porém, caso vc continue montando a tabela a partir de onde eu parei, vc verá que a repetição começa a partir do primeiro 1 e, portanto, a repetição é 1001. É uma questão de perceptiva: o resultado é o mesmo.
meu heroi não usa capa!!!!!