Representation av heltal och reella tal i datorns minne. Representerar siffror i en dator


| Planera lektioner för läsåret (FSES) | § 1.2. Representerar siffror i en dator

Lektion 6 - 7
§ 1.2. Representerar siffror i en dator

Nyckelord:

Ansvarsfrihet
osignerad heltalsrepresentation
signerad heltalsrepresentation
representation av reella tal

1.2.1. Heltalsrepresentation

En dators RAM består av celler, som var och en är ett fysiskt system som består av ett visst antal homogena element. Dessa element har två stabila tillstånd, varav ett motsvarar noll och det andra till ett. Varje sådant element används för att lagra en av bitarna - en siffra i ett binärt tal. Det är därför varje cellelement kallas en bit eller siffra (Fig. 1.2).

Ris. 1.2. Minnescell

För datorrepresentation av heltal används flera olika metoder, som skiljer sig från varandra i antal siffror (heltal tilldelas vanligtvis 8, 16, 32 eller 64 siffror) och närvaron eller frånvaron av en teckensiffra. Osignerad representation kan endast användas för icke-negativa heltal negativa tal kan endast representeras i signerad form.

Osignerad representation används för objekt som celladresser, olika räknare (till exempel antalet tecken i text), samt siffror som anger datum och tid, pixelstorlekar på grafiska bilder etc.

Det maximala värdet för ett icke-negativt heltal uppnås när alla bitar i cellen innehåller ettor. För n-bitars representation kommer det att vara lika med 2 n -1. Minsta antalet motsvarar n nollor lagrade i n minnesbitar och är lika med noll.

Följande är de maximala värdena för osignerade n-bitars heltal:

För att få en datorrepresentation av ett heltal utan tecken räcker det att konvertera talet till det binära talsystemet och fylla på det resulterande resultatet till vänster med nollor till standardsiffror.

Exempel 1. Siffran 53 10 = 110101 2 i åttasiffrig representation har formen:

Samma nummer 53 med sexton siffror kommer att skrivas enligt följande:

När den representeras med ett tecken tilldelas den mest signifikanta (vänster) siffran till numrets tecken, de återstående siffrorna tilldelas själva numret. Om talet är positivt placeras 0 i teckenbiten, om talet är negativt - 1. Denna representation av tal kallas en direktkod.

I datorer används direktkoder för att lagra positiva tal i lagringsenheter för att utföra operationer på positiva tal.

Informationsmodulen "Nummer och dess datorkod" publiceras på webbplatsen för Federal Center for Information and Educational Resources (http://fcior.edu.ru/). Med denna resurs kan du få ytterligare information om ämnet du studerar.

För att utföra operationer på negativa tal används tilläggskod för att ersätta subtraktionsoperationen med addition. Du kan ta reda på algoritmen för att generera en extra kod med hjälp av informationsmodulen "Ytterligare kod" som finns på webbplatsen för Federal Center for Information and Educational Resources (http://fcior.edu.ru/).

1.2.2. Representation av reella tal

Vilket reellt tal A som helst kan skrivas i exponentiell form:

Var:

m - mantissa av numret;

p - nummerordning.

Till exempel kan numret 472 LLC LLC representeras enligt följande: 4,72 10 8, 47,2 10 7, 472,0 10 6, etc.

Du kanske har stött på den exponentiella formen att skriva siffror när du utför beräkningar med hjälp av en miniräknare, när du fick inlägg i följande form som svar: 4.72E+8.

Här betecknar tecknet "E" basen för decimaltalssystemet och läses som "multiplicera med tio i potens."

Från exemplet ovan kan du se att positionen för decimalkomma i ett tal kan ändras.

För konsekvens skrivs mantissan vanligtvis som ett egentligt bråk med en siffra som inte är noll efter decimalkomma. I det här fallet kommer numret 472 LLC LLC att representeras som 0,472 10 9.

Ett reellt tal kan uppta 32 eller 64 bitar i datorns minne. I det här fallet tilldelas bitar för att lagra mantiss-tecknet, ordertecken, order och mantissa.

Exempel:

Representationsintervallet för reella tal bestäms av antalet bitar som allokerats för att lagra ordningen på antalet, och precisionen bestäms av antalet bitar som allokerats för att lagra mantissan.

Det maximala värdet för nummerordningen för exemplet ovan är 1111111 2 = 127 10, och därför är maxvärdet för numret:

0,11111111111111111111111 10 1111111

Försök själv räkna ut vad decimalmotsvarigheten till detta värde är.

Ett brett utbud av representationer av reella tal är viktigt för att lösa vetenskapliga och tekniska problem. Samtidigt bör det förstås att algoritmer för bearbetning av sådana tal är mer arbetskrävande jämfört med algoritmer för bearbetning av heltal.

DET VIKTIGASTE

Flera olika metoder används för att representera heltal på en dator, som skiljer sig från varandra i antalet siffror (8, 16, 32 eller 64) och närvaron eller frånvaron av en teckensiffra.

För att representera ett heltal utan tecken bör det konverteras till det binära talsystemet och det resulterande resultatet ska fyllas ut till vänster med nollor till standardkapacitet.

När den representeras med ett tecken tilldelas den mest signifikanta siffran till numrets tecken, de återstående siffrorna tilldelas själva numret. Om talet är positivt, så placeras 0 i teckenbiten, om talet är negativt, då 1. Positiva tal lagras i datorn i direkt kod, negativa tal i komplementär kod.

Vid lagring av reella tal i en dator tilldelas bitar för att lagra tecknet för talets ordning, själva ordningen, mantissans tecken och mantissan. I det här fallet skrivs vilket nummer som helst så här:

Var:

m - mantissa av numret;
q - basen av talsystemet;
p - nummerordning.

Frågor och uppgifter

1. Läs presentationsmaterialet för stycket som finns i den elektroniska bilagan till läroboken. Använd detta material när du förbereder svar på frågor och slutför uppgifter.

2. Hur representeras positiva och negativa heltal i datorns minne?

3. Vilket heltal som helst kan betraktas som ett reellt tal, men med en nollbråkdel. Motivera möjligheten att ha speciella sätt för datorrepresentation av heltal.

4. Representera siffran 63 10 i osignerat 8-bitarsformat.

5. Hitta decimalekvivalenterna för tal med hjälp av deras direktkoder, skrivna i 8-bitars format:

a) 01001100;
b) 00010101.

6. Vilket av talen 443 8, 101010 2, 256 10 kan lagras i 8-bitars format?

7. Skriv följande siffror i naturlig form:

a) 0,3800456 102;
b) 0,245 10-3;
c) 1,256900E+5;
d) 9,569120E-3.

8. Skriv talet 2010.0102 10 på fem olika sätt i exponentiell form.

9. Skriv följande siffror i exponentiell form med en normaliserad mantiss - ett egenbråk som har en siffra som inte är noll efter decimalkomma:

a) 217,934 10;
b) 75321 10;
c) 0,00101 10.

10. Rita ett diagram som förbinder de grundläggande begreppen som diskuteras i detta stycke.

Reella tal i matematiska beräkningar har inga begränsningar för intervallet och precisionen för talrepresentation. Men i datorer lagras nummer i register och minnesplatser med ett begränsat antal siffror. Det är därför noggrannhet representation riktiga nummer, tänkbart i en bil, är ändlig och räckvidden är begränsad.

När man skriver reella tal i program är det vanligt att man använder en punkt istället för det vanliga kommatecken. Vilket reellt tal som helst kan representeras i form av tal med radixordningen i talsystemet.

Exempel 4.4. Decimaltalet 1,756 i form av att skriva siffror med radixordningen i talsystemet kan representeras enligt följande:

1.756 . 10 0 = 0.1756 . 10 1 = 0.01756 . 10 2 = ...

17.56 . 10 -1 = 175.6 . 10 -2 = 1756.0 . 10 -3 = ... .

Flytpunktsrepresentation kallad nummerrepresentation N i ett talsystem med en bas q som :

N = m*. q sid ,

Var m - en multiplikator som innehåller alla siffror i numret (mantissa), sid - ett heltal som kallas order.

Om den "flytande" punkten är placerad i mantissan före den första signifikanta siffran, med ett fast antal siffror tilldelade för mantissan, registreras det maximala antalet signifikanta siffror i numret, det vill säga den maximala noggrannheten för talets representation i maskinen.

Om i mantissan den första siffran efter punkten (komma) skiljer sig från noll, kallas ett sådant tal normaliserats .

Mantissa och ordning q Det är vanligt att skriva ett -ary-tal i radixsystemet q , och själva basen är i decimalsystemet.

Exempel 4.5. Här är exempel på en normaliserad representation av ett tal i decimalsystemet:

2178.01 =0.217801 * 10 4

0.0045 =0.45 * 10 -2

Exempel i binärt:

10110,01= 0,1011001 * 2 101 (ordning 101 2 = 5 10)

Moderna datorer stödjer flera internationella standardformat för lagring av riktiga flyttalstal, varierande i precision, men de har alla samma struktur. Ett reellt tal lagras i tre delar: mantissans tecken, den förskjutna ordningen och mantissan:

Karakteristisk n-bit normaliserat antal beräknas enligt följande: om ordern tilldelas k siffror, läggs sedan en offset lika med (2 k -1 -1) till det sanna värdet av den ordning som representeras i de tvås komplementkod.

Således omvandlas en order som tar värden i intervallet -128 till +127 till en partisk ordning i intervallet 0 till 255. Den partiska ordningen lagras som ett tal utan tecken, vilket förenklar jämförelse, addition och subtraktion av order , och förenklar även jämförelseoperationen de normaliserade talen själva.

Antalet siffror som allokeras till ordern påverkar intervallet från det minsta numret som inte är noll till det största antalet som kan representeras i maskinen givet formatet. Uppenbarligen, ju fler siffror som allokeras till mantissan, desto högre blir noggrannheten för sifferrepresentationen. På grund av det faktum att för normaliserade reella tal den mest signifikanta biten i mantissan alltid är 1, lagras inte denna mest signifikanta bit i minnet.

Vilket binärt heltal som helst som innehåller högst m siffror, kan konverteras till verkligt format utan förvrängning.

Tabell 4.3. Standardformat för att representera reella tal

Exempel 4.6. Representation av normaliserade tal i ett enda format.

Låt oss illustrera hur numret 37.16 10 kommer att lagras. Vid konvertering till ett binärt tal, resulterar inte en exakt översättning av 100101,(00101000111101011100) - bråkdelen omgiven av parentes upprepas i perioden.

Vi omvandlar talet till normaliserad form: 0,100101(00101000111101011100) * 2 110

Låt oss representera ett reellt tal i 32-bitarsformat:

1. Tecknet för talet är "+", så vi anger 0 i teckenbiten (31);

2. För att ställa in ordningen allokeras 8 bitar till det sanna värdet av ordningen som presenteras i den kompletterande koden, vi lägger till offset (2 7 -1) = 127. Eftersom ordern är positiv sammanfaller den direkta orderkoden med den extra ordern, låt oss beräkna den förskjutna ordern: 00000110 + 01111111=10000101

Vi går in i den resulterande skiftade ordningen.

3. Vi anger mantissan, samtidigt som vi tar bort den mest signifikanta siffran i mantissan (den är alltid lika med 1);

ändrad ordning

mantissa

I det här exemplet kunde vi bara överföra 24 bitar, resten gick förlorade med en förlust av precision i att representera numret.

Inom datorteknik är reella tal (till skillnad från heltal) tal som har en bråkdel.

När du skriver dem Istället för kommatecken är det vanligt att skriva en punkt. Så till exempel är talet 5 ett heltal, och talen 5.1 och 5.0 är reella.

För att underlätta visningen av siffror som tar värden från ett ganska brett intervall (det vill säga både mycket små och mycket stora), formen av att skriva siffror med basordningen för talsystemet. Till exempel kan decimaltalet 1,25 representeras i denna form enligt följande:

1.25*10 0 = 0.125*10 1 = 0.0125*10 2 = ... ,
eller så här:
12.5*10 -1 = 125.0*10 -2 = 1250.0*10 -3 = ... .

Om den "flytande" punkten är placerad i mantissan före den första signifikanta siffran, med ett fast antal siffror tilldelade för mantissan, registreras det maximala antalet signifikanta siffror i numret, det vill säga den maximala noggrannheten för talets representation i maskinen. Därför:

Denna representation av reella tal, som är mest fördelaktig för en dator, kallas normaliserats.

Mantissan och ordningen för ett q-ary-tal skrivs vanligtvis i systemet med basen q, och själva basen skrivs i decimalsystemet.

Exempel på normaliserad representation:

Decimalsystem Binärt system

753,15 = 0,75315*103; -101,01 = -0,10101*2 11 (ordning 11 2 = 3 10)

0,000034 = -0,34*10 -4; -0,000011 = 0,11*2 -100 (order -100 2 = -410)

Reella tal skrivs olika i olika typer av datorer. I det här fallet ger datorn vanligtvis programmeraren möjlighet att välja mellan flera talformat som är mest lämpade för en viss uppgift - med fyra, sex, åtta eller tio byte.

Som ett exempel, här är egenskaperna hos de reella talformaten som används av IBM-kompatibla persondatorer:

Verkliga talformat Storlek i byte Ungefärligt intervall för absoluta värden Antal signifikanta decimalsiffror
Enda 4 10 -45 ... 10 38 7 eller 8
Verklig 6 10 -39 ... 10 38 11 eller 12
Dubbel 8 10 -324 ... 10 308 15 eller 16
Avancerad 10 10 -4932 ... 10 4932 19 eller 20

Från denna tabell kan man se att formen för representation av flyttalsnummer gör att du kan skriva tal med hög precision och från ett mycket brett spektrum.

Vid lagring av flyttalsnummer tilldelas de siffror för mantissa, exponent, taltecken och exponenttecken:

Låt oss visa med exempel hur vissa tal skrivs i normaliserad form i ett fyrabyteformat med sju bitar för att registrera ordningen.

1. Antal 6,25 10 = 110,01 2 = 0,11001

  • 2 11:

2. Tal -0,125 10 = -0,0012 = -0,1*2 -10 (negativ ordning skrivs i tvås komplement):

Syftet med tjänsten. Online-kalkylatorn är utformad för att representera reella tal i flyttalsformat.

Regler för inmatning av siffror

  1. Siffror i decimaltalssystemet kan anges antingen utan bråkdel eller med bråkdel (234234.455).
  2. Tal i det binära talsystemet består endast av siffrorna 0 och 1 (10100.01).
  3. Siffror i det hexadecimala talsystemet består av siffrorna 0...9 och bokstäverna A...F.
  4. Du kan också få omvänd representation av koden (från hexadecimal till decimal, 40B00000)
Exempel nr 1. Representera talet 133,54 i flyttalsform.
Lösning. Låt oss representera talet 133,54 i normaliserad exponentiell form:
1,3354*10 2 = 1,3354*exp 10 2
Talet 1,3354*exp 10 2 består av två delar: mantissan M=1,3354 och exponenten exp 10 =2
Om mantissan ligger inom intervallet 1 ≤ M Representation av ett tal i denormaliserad exponentiell form.
Om mantissan ligger inom intervallet 0,1 ≤ M Låt oss representera talet i denormaliserad exponentiell form: 0,13354*exp 10 3

Exempel nr 2. Representera det binära talet 101.10 2 i normaliserad form, skrivet i 32-bitars IEEE754-standarden.
Lösning.
Representation av ett binärt flyttal i exponentiell normaliserad form.
Låt oss flytta siffran två åt höger. Som ett resultat fick vi huvudkomponenterna i ett exponentiellt normaliserat binärt tal:
Mantissa M=1,011
Exponent exp 2 =2
Konvertera binärt normaliserat tal till 32-bitars IEEE 754-format.
Den första biten tilldelas för att indikera talets tecken. Eftersom talet är positivt är den första biten 0
De nästa 8 bitarna (2:a till 9:e) är reserverade för exponenten.
För att bestämma exponentens tecken, för att undvika att introducera ytterligare en teckenbit, lägg till en offset till exponenten på en halv byte +127. Så vår exponent är: 2 + 127 = 129
Låt oss konvertera exponenten till binär representation.
De återstående 23 bitarna är reserverade för mantissan. I en normaliserad binär mantiss är den första biten alltid lika med 1, eftersom talet ligger i intervallet 1 ≤ M För att konvertera heltalsdelen måste du multiplicera siffran i talet med motsvarande sifferpotens.
01100000000000000000000 = 2 22 *0 + 2 21 *1 + 2 20 *1 + 2 19 *0 + 2 18 *0 + 2 17 *0 + 2 16 *0 + 2 15 *0 + 2 14 *0 + 2 13 *0 + 2 12 *0 + 2 11 *0 + 2 10 *0 + 2 9 *0 + 2 8 *0 + 2 7 *0 + 2 6 *0 + 2 5 *0 + 2 4 *0 + 2 3 *0 + 2 2 *0 + 2 1 *0 + 2 0 *0 = 0 + 2097152 + 1048576 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 = 3145728
I decimalkod uttrycks mantissan som 3145728
Som ett resultat är talet 101.10 som representeras i IEEE 754 med enkel precision lika med.
Låt oss konvertera till hexadecimal representation.
Låt oss dela upp källkoden i grupper om 4 bitar.
2 = 0100 0000 1011 0000 0000 0000 0000 0000 2
Vi får numret:
0100 0000 1011 0000 0000 0000 0000 0000 2 = 40B00000 16







2024 gtavrl.ru.