Hur hittar man exponent i flyttalsrepresentation?

48 visningar
"Flyttalets exponent avslöjas genom att avkoda dess bitrepresentation. Man identifierar den del som representerar exponenten, ofta enligt IEEE 754-standarden. En liten bit-manipulation avslöjar sedan exponentens värde, med hänsyn till bias om sådan används. Störningar i koefficienterna påverkar exponenten indirekt genom förändring av talets storleksordning."
Feedback 0 gillningar

Hitta exponenten i flyttal?

Okej, så exponenten i flyttal... det är ju en grej. Jag har klurat på det där en del, speciellt när jag försökte optimera en bildbehandlingsalgoritm en gång i tiden.

Grejen är ju, flyttal representeras liksom i delar, ungefär som vetenskaplig notation. Man har en mantissa (eller signifikand) och en exponent. Det är exponenten som bestämmer storleken, alltså var decimaltecknet hamnar.

Första gången jag fattade det ordentligt var när jag satt på biblioteket i Linköping, typ våren 2010, och verkligen plöjde igenom IEEE 754 standarden. Det var inte kul, men det gav resultat.

Om du har ett flyttal, säg 3.14 x 10^5, så är 5:an exponenten. I datorns binära representation är det lite mer komplicerat, men principen är densamma.

Jag minns att jag var skitfrustrerad för att mina beräkningar blev fel. Visade sig att jag hade missförstått hur exponenten representerades binärt. Sjukt irriterande, men sånt händer.

Det finns verktyg och funktioner i de flesta programmeringsspråk som kan hjälpa dig att plocka ut exponenten direkt. Googla "extract exponent" + ditt programspråk, så hittar du säkert något.

Kom ihåg bara, exponenten kan vara negativ också. Då får du små tal, typ 0.000001. Allt handlar om att flytta decimaltecknet, liksom.

Jag har suttit och debuggat fel som berodde på felaktiga exponenter. Det är en djungel, men man lär sig.