Flydende punkt

Reelle tal i binære tal skal lagres på en særlig måde i en computer. Computere repræsenterer tal som binære hele tal (hele tal, der er potenser af to), så der er ingen direkte måde for dem at repræsentere ikke-integrale tal som decimaltal på, da der ikke er noget radixpunkt. En måde, hvorpå computere kan omgå dette problem, er ved at repræsentere flydende punkt, hvor "flydende" henviser til, at radixpunktet kan flyttes højere eller lavere, når det ganges med en eksponent (potens).


 

Oversigt

I matematik og videnskab bliver meget store og meget små tal ofte gjort enklere og ganget med en tiendedel for at gøre dem lettere at forstå. Det kan f.eks. være meget nemmere at læse 1,2 billioner som {\displaystyle 1.2\times 10^{12}} end 1 200 000 000 000 000. Dette kan også bruges med negative ti-puder til at lave små tal, hvilket betyder, at du kan repræsentere 0,000001 som {\displaystyle 1\times 10^{-6}}. Denne fremgangsmåde kaldes videnskabelig notation.

Da computere er begrænset til hele tal og binære tal, betyder det, at de ikke uden videre kan repræsentere decimale brøkregningstal. For at kunne repræsentere brøkregningstal bruger computere tre sæt binære tal til at lave en videnskabelig notationsrepræsentation. De er: den signerede bit, som bestemmer, om tallet er positivt (0) eller negativt (1); signifikanten, som er en heltal (hel) version af tallet; og eksponenten, som er den potens, du multiplicerer basen med.

Betydning og

Signifikanten findes ved at tage dit tal og flytte radixpunktet, indtil der ikke længere er nogen brøkdel, hvilket gør det til et heltal. I decimaltal er dette at gøre 1,45 til 145 ved at flytte punktet 2 trin til højre, og i binærtal er dette at gøre 1101,0111 (13,4375) til 1101 0111 (215) ved at flytte punktet 4 trin til højre; i begge tilfælde er disse tal ikke relateret til hinanden ud over at bruge de samme cifre i en lignende rækkefølge.

På samme måde som videnskabelig notation gør signifikanten så grundlæggende som muligt, er målet med flydende punkttal at gøre den til et helt tal, så den kan repræsenteres i bytes og bruges i beregninger.

Exponent

Eksponenten er det antal cifre, som radixpunktet har bevæget sig forbi: hvis det bevæger sig til venstre, er eksponenten negativ, men hvis det bevæger sig til højre, er den positiv. Som ovenfor kræver det at gøre 1,45 til 145, at du ganger med 100, så eksponenten er 2, da {\displaystyle 100=10^{2}}. På samme måde kræver det at gøre 1101.0111 (13.4375) til 1101 0111 (215), at radixpunktet flyttes fire kolonner til højre, så eksponenten er 4. Dette kan verificeres i decimaltal som {\displaystyle 215\div 13.4375=16(2^{4})} .

Da processen er omvendt i de fleste tilfælde af videnskabelig notation, da det drejer sig om at gøre en brøk til et heltal i stedet for at gøre et stort heltal til en brøk, er eksponenter generelt negative for at flytte decimalpladsen til venstre; i decimal ville dette være at gøre dit heltal 145 tilbage til brøkstallet 1,45 ved at gange det med {\displaystyle 10^{-2}}. I stedet for at bruge en signeret bit længst til venstre er eksponenten i stedet forspændt, hvilket giver 32-bit floateksponenterne et interval på {\displaystyle 2^{-126}} til {\displaystyle 2^{127}}. Udgangsværdien af den skæve eksponent kan findes ved at lægge 127 til den:

{\displaystyle b^{5}=132(5+127)=10000100}

{\displaystyle b^{-5}=122(-5+127)=01111010}

{\displaystyle b^{0}=127(0+127)=01111111}



 

Eksempel

Decimal til Bicimal

Lad os f.eks. antage, at vi ønsker at repræsentere decimaltallet 37,40625 til dets binære modstykke: et bikimaltal (eller binært decimaltal/brøk). Først skal vi tage vores decimaltal, som er i potenser af 10, og konvertere det til binært tal, som er i potenser af 2. En måde at gøre dette på er at trække den størst mulige potens af to fra, indtil man når nul:

{\displaystyle 37.40625-\mathbf {32} (2^{5})=5.40625}

{\displaystyle 5.40625-\mathbf {4} (2^{2})=1.40625}

{\displaystyle 1.40625-\mathbf {1} (2^{0})=0.40625}

{\displaystyle 0.40625-\mathbf {0.25} (2^{-2})=0.15625}

{\displaystyle 0.15625-\mathbf {0.125} (2^{-3})=0.03125}

{\displaystyle 0.03125-\mathbf {0.03125} (2^{-5})=0}

Ved hjælp af ovenstående potenser af to kan vi repræsentere vores decimaltal {\displaystyle 37.40625} på følgende måde:

Strøm:

{\displaystyle 2^{5}}

{\displaystyle 2^{4}}

{\displaystyle 2^{3}}

{\displaystyle 2^{2}}

{\displaystyle 2^{1}}

{\displaystyle 2^{0}}

-

{\displaystyle 2^{-1}}

{\displaystyle 2^{-2}}

{\displaystyle 2^{-3}}

{\displaystyle 2^{-4}}

{\displaystyle 2^{-5}}

Værdi:

1

0

0

1

0

1

-

0

1

1

0

1

Bicimal til Float

Vi har bekræftet, at vores decimaltal {\displaystyle 37.40625} er repræsenteret i binær form som {\displaystyle 100101.01101} . Problemet med computere er imidlertid, at de repræsenterer tal som hele potenser af to ved hjælp af bits, hvilket gør brøk- og negative tal kompliceret. I overensstemmelse med IEEE-754 er den måde, hvorpå dette normalt gøres på en computer, at oprette et 32-bits floating point-tal, der består af tre dele: tegnet, 1 bit til at bestemme, om vores tal er positivt eller negativt; eksponenten, 8 bits til at repræsentere vores eksponent, og som vi lægger 127 til for at undgå signerede bytes; og vores signifikant, som er vores binære tal uden et bikimalpunkt fordelt på 23 bits. Da vi skal flytte vores bicimalpunkt 5 steder for at gøre {\displaystyle 100100.01101} til signifikanten {\displaystyle 10010001101} er vores eksponent {\displaystyle 132(5+127)} . Ved at bruge en 32-bit float kan vi repræsentere 37,40625 på denne måde:

Type:

±

Exponent

Betydning og

Værdi:

0

1

0

0

0

0

1

0

0

0

0

1

0

1

0

1

1

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

Betydning:

+

{\displaystyle 2^{7}+2^{2}=132}

{\displaystyle 2^{20}+2^{18}+2^{16}+2^{15}+2^{13}=1,417,216}



 

Relaterede sider

 

Spørgsmål og svar

Spørgsmål: Hvad er reelle tal?


A: Reelle tal er alle tal, der kan udtrykkes som decimaltal, herunder brøker og irrationelle tal.

Spørgsmål: Hvordan lagrer computere binære tal?


Svar: Computere lagrer binære tal som binære heltal, som er hele tal, der er potenser af to.

Spørgsmål: Er der en direkte måde, hvorpå computere kan repræsentere ikke-tallige tal som decimaltal?


A: Nej, der er ingen direkte måde for computere at repræsentere ikke-tallige tal som decimaltal på, fordi der ikke findes noget radixpunkt.

Sp: Hvad er formålet med repræsentation af flydende kommaer?


Svar: Frivolpunktsrepræsentation gør det muligt for computere at omgå problemet med manglende radixpunkt ved at lade radixpunktet bevæge sig højere eller lavere, når det ganges med en eksponent (potens).

Spørgsmål: Hvad betyder "floating" i floating-point-repræsentation?


Svar: Udtrykket "flydende" henviser til, at radixpunktet kan bevæge sig højere eller lavere, når det ganges med en eksponent (potens).

Spørgsmål: Hvordan beregner man en eksponent (potens)?


Svar: En eksponent (potens) beregnes ved at multiplicere et grundtal med sig selv et bestemt antal gange. F.eks. 2^3 = 8, fordi 2 x 2 x 2 x 2 = 8.

AlegsaOnline.com - 2020 / 2023 - License CC3