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


| Lektionsplanering för läsåret (FSES) | § 1.2. Representation av siffror i en dator

Lektion 6 - 7
§ 1.2. Representation av siffror i en dator

Nyckelord:

Ansvarsfrihet
osignerad representation av heltal
signerad heltalsrepresentation
representation av reella tal

1.2.1. Heltalsrepresentation

En dators RAM-minne 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 motsvarar ett. Varje sådant element tjänar till att lagra en av bitarna - en bit av ett binärt tal. Det är därför varje element i cellen kallas en bit eller bit (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 (för heltal tilldelas vanligtvis 8, 16, 32 eller 64 siffror) och närvaron eller frånvaron av en teckenbit. Osignerad representation kan endast användas för icke-negativa heltal, negativa tal representeras endast i signerad form.

Den osignerade representationen används för objekt som celladresser, olika räknare (till exempel antalet tecken i text), samt siffror som anger datum och tider, grafiska bildstorlekar i pixlar, etc.

Det maximala värdet för ett icke-negativt heltal uppnås när enheter lagras i alla siffror i cellen. För en n-bitars representation blir det 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 resultatet med nollor till vänster till standardbitdjupet.

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

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

När den presenteras med ett tecken, tilldelas den mest signifikanta (vänster) siffran till tecknet för numret, de återstående siffrorna - till själva numret. Om talet är positivt placeras 0 i teckenbiten, om talet är negativt - 1. En sådan representation av siffror kallas direktkod.

I en dator används direktkoder för att lagra positiva tal i minnesenheter, för att utföra operationer på positiva tal.

Webbplatsen för Federal Center for Information and Educational Resources (http://fcior.edu.ru/) är värd för informationsmodulen "Nummer och dess datorkod". Med hjälp av denna resurs kan du få ytterligare information om ämnet som studeras.

För att utföra operationer med negativa tal används en extra kod som låter dig 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 publiceras 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 är mantissan för talet;

p är ordningen på numret.

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

Med den exponentiella formen att skriva siffror kunde du mötas när du utförde beräkningar med hjälp av en miniräknare, när du fick poster av 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 man se att kommatets position i notationen av ett tal kan ändras.

För enhetlighet 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 detta fall tilldelas bitar för att lagra mantissans tecken, exponentens tecken, exponenten och mantissan.

Exempel:

Representationsintervallet för reella tal bestäms av antalet siffror som tilldelats för att lagra ordningen på numret, och noggrannheten bestäms av antalet siffror som tilldelats för att lagra mantissan.

Det maximala exponentvärdet för exemplet ovan är 1111111 2 = 127 10 , och därför är det maximala numeriska värdet:

0,11111111111111111111111 10 1111111

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

Ett brett spektrum av representation av reella tal är viktigt för att lösa vetenskapliga och tekniska problem. Samtidigt bör det förstås att algoritmerna för att bearbeta sådana tal är mer tidskrävande jämfört med algoritmerna för att bearbeta heltal.

DET VIKTIGASTE

För datorrepresentation av heltal används flera olika metoder, som skiljer sig från varandra i antal bitar (8, 16, 32 eller 64) och närvaron eller frånvaron av en teckenbit.

För att representera ett heltal utan tecken bör det omvandlas till ett binärt talsystem och det erhållna resultatet bör kompletteras med nollor till vänster till standardbitdjupet.

När den presenteras med ett tecken, tilldelas den mest signifikanta siffran till tecknet för numret, de återstående siffrorna - till själva numret. Om talet är positivt så placeras 0 i teckenbiten, om talet är negativt så 1. Positiva tal lagras i datorn i en direktkod, negativa i ytterligare ett.

Vid lagring av reella tal i en dator tilldelas bitar för lagring av 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 är mantissan för talet;
q är basen i talsystemet;
p är ordningen på numret.

Frågor och uppgifter

1. Bekanta dig med presentationsmaterialet för stycket som finns i det elektroniska tillägget till läroboken. Använd detta material när du förbereder svar på frågor och utfö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 lämpligheten av att ha speciella sätt för datorrepresentation av heltal.

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

5. Hitta decimalekvivalenterna för siffror genom deras direktkoder skrivna i signerat 8-siffrigt format:

a) 01001100;
b) 00010101.

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

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 kopplar samman de viktigaste begreppen som diskuteras i detta stycke.

Numeriska data bearbetas i en dator i det binära systemet. Tal lagras i datorns minne i binär kod, det vill säga som en sekvens av nollor och ettor, och kan representeras i format med fast eller flyttal.

Heltal lagras i minnet i fixpunktsformat. Med detta format för att representera tal tilldelas ett minnesregister för lagring av icke-negativa heltal, bestående av åtta minnesceller (8 bitar). Varje siffra i minnescellen motsvarar alltid samma siffra i numret, och kommatecknet är placerat till höger efter den minst signifikanta siffran och utanför bitrutnätet. Till exempel skulle numret 110011012 lagras i ett minnesregister så här:

Tabell 4

Det maximala värdet för ett icke-negativt heltal som kan lagras i ett register i ett fixpunktsformat kan bestämmas från formeln: 2n - 1, där n är antalet siffror i numret. Det maximala antalet i det här fallet kommer att vara lika med 28 - 1 = 25510 = 111111112 och det minsta 010 = 000000002. Således kommer intervallet för icke-negativa heltal att vara från 0 till 25510.

Till skillnad från decimalsystemet, i det binära systemet, i datorrepresentationen av ett binärt tal, finns det inga symboler som anger talets tecken: positiva (+) eller negativa (-), därför för att representera heltal med tecken i det binära systemet , används två sifferrepresentationsformat: talvärdesformat signerat och tvås komplementformat. I det första fallet tilldelas två minnesregister (16 bitar) för att lagra tecken med heltal, och den mest signifikanta biten (längst till vänster) används under talets tecken: om talet är positivt skrivs 0 till teckenbiten , om talet är negativt, då - 1. Till exempel kommer talet 53610 = 00000010000110002 att representeras i minnesregistren i följande form:

Tabell 5

och ett negativt tal -53610 = 10000010000110002 i formen:

Tabell 6

Det maximala positiva talet eller det minsta negativa talet i teckenformat (förutsatt att en siffra representeras som ett tecken) är 2n-1 - 1 = 216-1 - 1 = 215 - 1 = 3276710 = 11111111111111112 och siffrorna kommer att vara från - 3276710 till 32767.

Oftast, för att representera tecken med heltal i det binära systemet, används de tvås komplementformat, vilket gör det möjligt att ersätta den aritmetiska subtraktionsoperationen i en dator med en additionsoperation, vilket avsevärt förenklar strukturen hos mikroprocessorn och ökar dess hastighet.

För att representera negativa heltal i detta format används tvås komplement, vilket är additionen av modulen för ett negativt tal till noll. Omvandlingen av ett negativt heltal till en extra kod utförs med följande operationer:


1) skriv modulen för talet i en direktkod i n (n = 16) binära siffror;

2) få den omvända koden för numret (invertera alla siffror i numret, d.v.s. ersätt alla ettor med nollor och nollor med ettor);

3) lägg till en till den minst signifikanta siffran till den mottagna inversa koden.

Till exempel, för numret -53610 i detta format blir modulen 00000010000110002, returkoden blir 1111110111100111 och tilläggskoden blir 1111110111101000.

Man måste komma ihåg att tilläggskoden för ett positivt tal är själva numret.

För att lagra signerade heltal bortom 16-bitars datorrepresentationen när den används två minnesregister(detta talformat kallas även signerat korta heltalsformat), signerade medelstora och långa heltalsformat används. Fyra register används för att representera tal i mellantalsformatet (4 x 8 = 32 bitar), och åtta register används för att representera tal i det långa talformatet (8 x 8 = 64 bitar). Värdeintervallen för medelstora och långa talformat kommer att vara: -(231 - 1) ... + 231 - 1 och -(263-1) ... + 263 - 1.

Datorrepresentationen av fastpunktsnummer har sina fördelar och nackdelar. TILL förmåner inkluderar enkelheten i representationen av tal och algoritmer för implementering av aritmetiska operationer, nackdelarna är det ändliga intervallet för representation av tal, vilket kanske inte är tillräckligt för att lösa många problem av praktisk karaktär (matematisk, ekonomisk, fysisk, etc.). ).

Reella tal (ändliga och oändliga decimaler) bearbetas och lagras i en dator i flyttalsformat. Med detta format för att representera ett tal kan kommatets position i posten ändras. Alla reella tal K i flyttalsformat kan representeras som:

där A är mantissan för talet; h är basen för talsystemet; p är ordningen på numret.

Uttryck (2.7) för decimaltalssystemet kommer att ha formen:

för binär -

för oktal -

för hex -

Denna form av representation kallas också vanligt . Med en ändring i ordningen förskjuts kommatecken i talet, det vill säga det verkar flyta åt vänster eller höger. Därför kallas den normala formen för att representera tal flyttalsform. Decimaltalet 15,5, till exempel, i flyttalsformat kan representeras som: 0,155 102; 1,55 101; 15,5 100; 155,0 10-1; 1550.0 10-2, etc. Denna flyttalsform med decimaltal 15,5 används inte när man skriver datorprogram och matar in dem i en dator (datorinmatningsenheter accepterar endast linjär dataregistrering). Utifrån detta omvandlas uttrycket (2.7) för att representera decimaltal och mata in dem i en dator till formen

där P är ordningen på talet,

d.v.s. istället för basen i talsystemet 10 skriver de bokstaven E, istället för ett kommatecken, en punkt, och multiplikationstecknet sätts inte. Således kommer talet 15,5 i flyttal och linjär notation (datorrepresentation) att skrivas som: 0,155E2; 1,55E1; 15,5E0; 155.0E-1; 1550.0E-2, etc.

Oavsett talsystem kan vilket tal som helst i flyttalsform representeras av ett oändligt antal tal. Denna form av skrivande kallas onormaliserad . För en entydig representation av flyttalstal används en normaliserad form av talet, där talets mantiss måste uppfylla villkoret

där |A| - det absoluta värdet av talets mantiss.

Villkor (2.9) innebär att mantissan måste vara ett egenbråk och ha en siffra som inte är noll efter decimalkomma, eller, med andra ord, om mantissan har en icke-noll efter decimalkomma, så kallas talet normaliserat . Så, talet 15,5 i en normaliserad form (normaliserad mantis) i flyttalsform kommer att se ut så här: 0,155 102, dvs den normaliserade mantissan blir A = 0,155 och ordningen P = 2, eller i datorrepresentationen av talet 0,155 Е2 .

Flyttal har ett fast format och tar upp fyra (32 bitar) eller åtta byte (64 bitar) datorminne. Om talet upptar 32 bitar i datorns minne är detta ett normalt precisionstal, om 64 bitar är detta ett dubbelt precisionstal. När man skriver ett flyttal, allokeras bitar för att lagra mantiss-tecknet, exponenttecken, mantissan och exponenten. Antalet siffror som allokeras för ordningen på numret bestämmer intervallet för ändring av siffror, och antalet siffror som tilldelas för att lagra mantissan bestämmer noggrannheten med vilken numret anges.

När du utför aritmetiska operationer (addition och subtraktion) på tal representerade i flyttalsformat, implementeras följande procedur (algoritm):

1) anpassning av de ordningsföljder av tal som aritmetiska operationer utförs på (ordningen för ett mindre tal i absolutvärde ökar till ett värde i storleksordningen av ett större tal i absolut värde, medan mantissan minskar med samma antal gånger) ;

2) aritmetiska operationer utförs på mantissorna av tal;

3) resultatet är normaliserat.

Praktisk del

Serviceuppdrag. Online-kalkylatorn är utformad för att representera reella tal i flyttalsformat.

Regler för inmatning av siffror

  1. Siffror i decimaltalssystemet kan anges både utan bråkdel och med bråkdel (234234.455).
  2. Tal i det binära systemet består endast av siffrorna 0 och 1 (10100.01).
  3. Siffror i hexadecimalt talsystem består av siffrorna 0 ... 9 och bokstäverna A ... F .
  4. Du kan också få omvänd representation av koden (hexadecimal till decimal, 40B00000)
Exempel #1. Uttryck talet 133,54 som ett flyttal.
Lösning. Låt oss representera talet 133,54 i en 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 Representerar 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 #2. Representera det binära talet 101.10 2 i normaliserad form, skriv i 32-bitars IEEE754-standarden.
Lösning.
Representerar ett binärt flyttal i exponentiell normaliserad form.
Flytta siffran två siffror åt höger. Som ett resultat fick vi huvudkomponenterna i det exponentiella normaliserade binära talet:
Mantissa M=1,011
Exponent exp 2 =2
Konvertera binärt normaliserat tal till 32-bitars IEEE 754-format.
Den första biten är reserverad för numrets tecken. Eftersom talet är positivt är den första biten 0
De nästa 8 bitarna (från 2:a till 9:e) är reserverade för exponenten.
För att bestämma exponentens tecken, för att inte införa 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. För en normaliserad binär mantiss är den första biten alltid 1, eftersom talet ligger inom området 1 ≤ M.
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 numret 3145728
Som ett resultat är talet 101.10 som representeras i IEEE 754 med enkel precision lika med.
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 ett nummer:
0100 0000 1011 0000 0000 0000 0000 0000 2 = 40B00000 16

Reella tal (till skillnad från heltal) i datorteknik kallas för tal som har en bråkdel.

När du skriver dem punkt istället för kommatecken. 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 belägen 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 representationen av numret i maskinen. Därför:

Denna, den mest fördelaktiga för en dator, representation av reella tal kallas normaliserats.

Det är vanligt att skriva mantissan och ordningen för ett q-ary-tal i ett system med basen q, och själva basen - i ett decimalsystem.

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
förlängt 10 10 -4932 ... 10 4932 19 eller 20

Denna tabell visar att formen för representation av flyttalsnummer gör att du kan skriva tal med hög noggrannhet och från ett mycket brett spektrum.

När du lagrar flyttalsnummer, siffror för mantissa, exponent, taltecken och exponenttecken:

Vi kommer att visa med exempel hur vissa nummer skrivs i normaliserad form i ett fyrabyteformat med sju siffror för att registrera ordningen.

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

  • 2 11:

2. Siffran -0,125 10 = -0,0012 = -0,1 * 2 -10 (den negativa ordningen skrivs i tilläggskoden):

Om vi ​​kunde titta på innehållet i datorminnet skulle vi se följande:

Denna siffra speglar Regel #1: Data (och program) i datorns minne lagras i binär form, d.v.s. i form av kedjor av nollor och ettor.

Regel #2:representationen av data i en dator är diskret.

Vad är diskret?

Närmaste svar: "Separat"

Obs: En diskret uppsättning består av element separerade från varandra. Till exempel är sand diskret eftersom den består av enskilda sandkorn. Och vatten eller olja är kontinuerlig (inom ramen för våra förnimmelser, eftersom vi fortfarande inte kan känna enskilda molekyler)

Till exempel är en bild konstruerad som en uppsättning punkter, d.v.s. diskret.

Regel #3:uppsättningen kvantiteter som kan representeras i minnet är begränsad och ändlig.

Representation av siffror i en dator.

Hela siffror i en dator. (Fixpunktsformat)

Varje datorenhet (dator, miniräknare) kan bara fungera med en begränsad uppsättning heltal. Titta på kalkylatortavlan, 10 tecken är placerade på den. Den största positiva siffran som får plats på resultattavlan:

9

9

9

9

9

9

9

9

9

Det största negativa talet i absolut värde:

9

9

9

9

9

9

9

9

9

Detsamma gäller i datorn.

Till exempel, om en minnescell på 16 bitar allokeras för ett heltal, kommer det största positiva talet att vara:

0

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

I decimalnotation är det lika med:

2 15 -1=32767

Här spelar den första biten rollen som numrets tecken. Noll är ett tecken på ett positivt tal. Det största negativa talet modulo är -32768.

Så här får du dess interna representation:

1) konvertera talet i 32768 till binärt talsystem, det är lika med
1000000000000000 - mottagen direktkod.

2) invertera denna binära kod, dvs. ersätt nollor med ettor och ettor med nollor - fick returkod.

0111111111111111

3) Lägg till en till detta binära tal, som ett resultat får vi:

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

Enheten i den första biten betyder minustecknet.

(du behöver inte tro att den mottagna koden är "minus noll". Denna kod representerar numret -32768.)

Det här är reglerna för maskinrepresentation av heltal. Denna interna representation av ett nummer kallas ytterligare kod.

Om N bitar allokeras för ett heltal i datorns minne, är intervallet för heltalsvärden: [-2 N-1 -1, 2 N -1]

Vi har övervägt representationsformatet för signerade heltal, dvs. positiv och negativ. Det händer att du bara behöver arbeta med positiva heltal. I det här fallet används heltalsformatet utan tecken.

I det här formatet är det minsta talet noll och det största talet för en 16-bitars cell är:

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

I decimalnotation är detta 2 16 - 1 = 65535, dubbelt så mycket som modulo för den signerade representationen.

Hela siffror i en dator. (flyttpunktsformat)

Det största antalet för olika miniräknare kan vara olika. Den enklaste räknaren har 999999999. Om du lägger till ytterligare en till den kommer räknaren att visa ett felmeddelande. Och på en mer "smart" kalkylator, kommer att lägga till en leda till detta resultat:

1

e

+

0

9

Denna post på resultattavlan tolkas enligt följande: 1 x10 9 .

Detta talformat kallas flyttalsformat.

1

e

+

0

9

mantissa

exponent

I en dator kan tal representeras i både fixpunkts- och flyttalsformat.







2022 gtavrl.ru.