Getallen worden opgeslagen in het computergeheugen. Gegevenstypen

Numerieke gegevens worden in een computer verwerkt binair systeem Afrekening. Getallen worden in binaire code in het computergeheugen opgeslagen, dat wil zeggen als een reeks nullen en enen, en kunnen worden weergegeven in een vast of zwevend-kommaformaat.

Gehele getallen worden in het geheugen opgeslagen in een vast kommaformaat. Met dit formaat voor het weergeven van getallen wordt een geheugenregister bestaande uit acht geheugencellen (8 bits) toegewezen voor het opslaan van niet-negatieve gehele getallen. Elk cijfer van een geheugencel komt altijd overeen met hetzelfde cijfer van het getal, en de komma bevindt zich rechts na het minst significante cijfer en buiten het cijferraster. Het nummer 110011012 zou bijvoorbeeld als volgt in een geheugenregister worden opgeslagen:

Tabel 4

Maximale waarde een niet-negatief geheel getal dat in een vast kommaformaat in een register kan worden opgeslagen, kan worden bepaald met de formule: 2n – 1, waarbij n het aantal cijfers van het getal is. Het maximale aantal is gelijk aan 28 - 1 = 25510 = 111111112 en het minimum 010 = 000000002. Het bereik van veranderingen in niet-negatieve gehele getallen ligt dus tussen 0 en 25510.

In tegenstelling tot decimaal systeem In het binaire getalsysteem zijn er bij het representeren van een binair getal op een computer geen symbolen die het teken van het getal aangeven: positief (+) of negatief (-), daarom, om gehele getallen met teken in het binaire systeem weer te geven, representatie van twee getallen Er worden formaten gebruikt: het ondertekende getalformaat en de complementformaatcode. In het eerste geval worden twee geheugenregisters (16 bits) toegewezen voor het opslaan van gehele getallen met teken, en wordt het meest significante cijfer (uiterst links) gebruikt als teken van het getal: als het getal positief is, wordt 0 naar het tekenbit geschreven , als het getal negatief is, dan 1. Het getal 53610 = 00000010000110002 wordt bijvoorbeeld in de volgende vorm in de geheugenregisters weergegeven:

Tabel 5

en een negatief getal -53610 = 10000010000110002 in de vorm:

Tabel 6

Het maximale positieve getal of minimale negatieve getal in het getalswaardeformaat met teken (rekening houdend met de weergave van één cijfer per teken) is 2n-1 – 1 = 216-1 – 1 = 215 – 1 = 3276710 = 1111111111111112 en het bereik van getallen zal zijn van - 3276710 tot 32767.

Meestal wordt, om gehele getallen met teken in het binaire systeem weer te geven, het twee-complementcodeformaat gebruikt, waarmee u de rekenkundige bewerking van aftrekken op een computer kunt vervangen door een optelbewerking, die de structuur van de microprocessor aanzienlijk vereenvoudigt en de prestaties ervan verhoogt .

Om negatieve gehele getallen in dit formaat weer te geven, wordt de twee-complementcode gebruikt, wat de modulus is van het complement van een negatief getal naar nul. Het converteren van een negatief geheel getal naar een twee-complement wordt uitgevoerd met behulp van de volgende bewerkingen:


1) schrijf de module van het getal in directe code in n (n = 16) binaire cijfers;

2) krijgen retourcode getallen (keer alle cijfers van een getal om, d.w.z. vervang alle enen door nullen en nullen door enen);

3) Voeg één toe aan het minst significante cijfer van de resulterende omgekeerde code.

Voor het getal -53610 in dit formaat is de modulus bijvoorbeeld 00000010000110002, de wederzijdse code is 1111110111100111 en de aanvullende code is 1111110111101000.

Houd er rekening mee dat het complement van een positief getal het getal zelf is.

Om ondertekende gehele getallen op te slaan, anders dan de 16-bits computerrepresentatie, indien gebruikt twee geheugenregisters(dit getalformaat wordt ook wel het korte geheeltallige formaat genoemd), de middellange en lange geheeltallige formaten worden gebruikt. Om getallen in het middengetalformaat weer te geven worden vier registers gebruikt (4 x 8 = 32 bits), en om getallen in het lange getalformaat weer te geven worden acht registers gebruikt (8 x 8 = 64 bits). De waardenbereiken voor de middellange en lange getalformaten zijn respectievelijk: -(231 – 1) ... + 231 – 1 en -(263-1) ... + 263 – 1.

Computerweergave van getallen in vast puntformaat heeft zijn voor- en nadelen. NAAR voordelen omvatten het gemak van weergave van getallen en implementatiealgoritmen rekenkundige bewerkingen De nadelen zijn het eindige bereik van representatie van getallen, wat onvoldoende kan zijn voor het oplossen van veel problemen van praktische aard (wiskundig, economisch, natuurkundig, enz.).

Reële getallen (eindig en oneindig decimalen) worden in floating point-formaat op de computer verwerkt en opgeslagen. Bij dit getalweergaveformaat kan de positie van de komma in de invoer veranderen. Elk reëel getal K in drijvende-kommanotatie kan worden weergegeven als:

waarbij A de mantisse van het getal is; H - systeem fundament rekening; p – nummervolgorde.

Uitdrukking (2.7) voor het decimale getallenstelsel zal de vorm aannemen:

voor binair -

voor octaal -

voor hexadecimaal -

Deze vorm van getalrepresentatie wordt ook wel genoemd normaal . Bij een verandering in de volgorde verschuift de komma in het getal, dat wil zeggen dat hij naar links of naar rechts lijkt te zweven. Daarom wordt de normale vorm van het weergeven van getallen genoemd drijvende-kommavorm. Het decimale getal 15,5, bijvoorbeeld in drijvende-kommaformaat, kan worden weergegeven als: 0,155 102; 1,55 101; 15,5 100; 155,0 10-1; 1550,0 10-2 etc. Deze vorm van drijvende-komma-decimaal 15,5 wordt niet gebruikt bij het schrijven computerprogramma's en deze in de computer invoeren (computerinvoerapparaten nemen alleen lineaire gegevensregistratie waar). Op basis hiervan wordt uitdrukking (2.7) voor het weergeven van decimale getallen en het invoeren ervan in de computer omgezet naar het formulier

waarbij P de volgorde van het getal is,

dat wil zeggen, in plaats van de basis van het getallensysteem 10 schrijven ze de letter E, in plaats van een komma, een punt, en het vermenigvuldigingsteken wordt niet geplaatst. Het getal 15,5 heeft dus het drijvende-kommaformaat en lineaire opname(computerrepresentatie) wordt geschreven als: 0.155E2; 1,55E1; 15,5E0; 155,0E-1; 1550.0E-2, enz.

Ongeacht het getallensysteem kan elk getal in drijvende-kommavorm worden weergegeven door een oneindig aantal getallen. Deze vorm van opnemen heet ongenormaliseerd . Voor een eenduidige weergave van getallen met drijvende komma wordt een genormaliseerde vorm van schrijven van een getal gebruikt, waarbij de mantisse van het getal moet voldoen aan de voorwaarde

waar |A| - absolute waarde mantissen van getallen.

Voorwaarde (2.9) betekent dat de mantisse een echte breuk moet zijn en een cijfer achter de komma moet hebben dat niet nul is, of, met andere woorden, als de mantisse geen nul achter de komma heeft, wordt het getal genormaliseerd genoemd. . Het getal 15,5 in genormaliseerde vorm (genormaliseerde mantisse) in drijvende-kommavorm zal er dus als volgt uitzien: 0,155 102, d.w.z. de genormaliseerde mantisse zal A = 0,155 zijn en orde P = 2, of in de computerrepresentatie van het getal 0,155E2.

Drijvende-kommagetallen hebben een vast formaat en nemen vier (32 bits) of acht bytes (64 bits) computergeheugen in beslag. Als een getal 32 bits in het computergeheugen in beslag neemt, dan is het een normaal precisiegetal; als het 64 bits is, dan is het een getal met dubbele precisie. Bij het schrijven van een getal met drijvende komma worden bits toegewezen om het teken van de mantisse, het teken van de exponent, de mantisse en de exponent op te slaan. Het aantal cijfers dat is toegewezen aan de volgorde van het getal bepaalt het bereik van de variatie van de getallen, en het aantal cijfers dat is toegewezen om de mantisse op te slaan, bepaalt de nauwkeurigheid waarmee het getal wordt gespecificeerd.

Bij het uitvoeren van rekenkundige bewerkingen (optellen en aftrekken) op getallen gepresenteerd in drijvende-komma-indeling, wordt de volgende procedure (algoritme) geïmplementeerd:

1) de volgorde van de getallen waarop rekenkundige bewerkingen worden uitgevoerd, wordt uitgelijnd (de volgorde van het kleinere getal in absolute waarde neemt toe tot de volgorde van het grotere getal in absolute waarde, de mantisse neemt met hetzelfde aantal keren af);

2) rekenkundige bewerkingen worden uitgevoerd op de mantissen van getallen;

3) het verkregen resultaat is genormaliseerd.

Praktisch gedeelte

Getallen weergeven in een computer

Gehele getallen zijn de eenvoudigste numerieke gegevens waarmee een computer werkt. Gehele getallen worden opgeslagen op een computer in vast puntformaat. In dit geval komt elk cijfer van de geheugencel altijd overeen met hetzelfde cijfer van het getal, en bevindt de "komma" zich rechts na het minst significante cijfer.

Om een ​​niet-negatief geheel getal op te slaan, wordt één geheugencel van 1 byte (8 bits) toegewezen, d.w.z. de reeks getallen die kunnen worden opgeslagen in RAM in de notatie van niet-negatieve gehele getallen, van 0 tot 255 (256 in totaal). Het minimale getal 0 komt overeen met acht nullen, en het maximale aantal 255 komt overeen met acht enen (255 10 = 11111111 2).

Om een ​​geheel getal met teken weer te geven, wordt het meest significante (linker) bit toegewezen aan het teken van het getal, de overige bits worden toegewezen aan het getal zelf. Als het getal positief is, wordt 0 in het tekenbit geplaatst, als het negatief is - 1. Tekengetallen van -128 tot 127 kunnen bijvoorbeeld in een byte worden weergegeven.

De computerweergave van gehele getallen gebruikt doorgaans één, twee of vier bytes, wat betekent dat de geheugencel respectievelijk acht, zestien of tweeëndertig bits lang zal zijn.

De weergave van een getal in de gebruikelijke vorm "teken" - "grootte", waarbij het meest significante cijfer van de cel wordt toegewezen aan het teken, en de rest - voor het schrijven van het getal in het binaire systeem, wordt genoemd directe code van een binair getal.

De directe code van de binaire getallen 1001 en -1001 voor een 8-bits cel is bijvoorbeeld respectievelijk 0 0001001 en 1 0001001.

Positieve getallen worden op een computer altijd weergegeven met behulp van directe code. De directe code van het nummer valt volledig samen met de opname van het nummer zelf in de cel van de machine.

De directe code van een negatief getal verschilt alleen van de directe code van het overeenkomstige positieve getal in de inhoud van het tekenbit.
Maar negatieve gehele getallen worden niet weergegeven in een computer met behulp van directe code; extra code.

De twee-complementcode van een positief getal is gelijk aan de directe code van dat getal.

De twee-complementcode van een negatief getal m is 2 n -|m|, waarbij n het aantal cijfers in de cel is.

Complementaire code wordt gebruikt om rekenkundige bewerkingen eenvoudiger uit te voeren. Als computer werkte met directe codes van positieve en negatieve getallen, dan zou het bij het uitvoeren van rekenkundige bewerkingen nodig zijn om een ​​reeks uit te voeren aanvullende acties. Bij het optellen zou men bijvoorbeeld de tekens van beide operanden moeten controleren en het teken van het resultaat moeten bepalen. Als de tekens hetzelfde zijn, wordt de som van de operanden berekend en wordt hetzelfde teken toegewezen. Als de tekens verschillend zijn, wordt het kleinere getal in absolute waarde afgetrokken van het grotere getal en wordt aan het resultaat het teken van het grotere getal toegekend. Dat wil zeggen, met een dergelijke weergave van getallen (in de vorm van alleen directe code), wordt de optelbewerking geïmplementeerd via een tamelijk complex algoritme. Als negatieve getallen worden weergegeven in de vorm van een extra code, wordt de optelling, inclusief die van verschillende tekens, beperkt tot hun bitsgewijze optelling.

Algoritme voor het verkrijgen van de complementaire code van een negatief getal.

Om een ​​extra k-bitcode van een negatief getal te verkrijgen, moet u:

    de module van een negatief getal wordt weergegeven door directe code in k-binaire cijfers;

    keer de waarde van alle bits om: vervang alle nullen door enen, en enen door nullen, er wordt dus een k-bit omgekeerde code van het originele getal verkregen);

    voeg er één toe aan de resulterende omgekeerde code.

Voorbeeld:

We krijgen de 8-bit complementcode voor het getal -52:
00110100 - nummer |-52|=52 in directe code
11001011 - nummer -52 in omgekeerde code
11001100 - aantal -52 V extra code

Weergave van reële getallen in een computer.

Om reële getallen in moderne computers weer te geven, is een methode aangenomen drijvende-kommaweergaven.

Deze representatiemethode is gebaseerd op de genormaliseerde (exponentiële) notatie van reële getallen.
Een genormaliseerde notatie voor een reëel getal A dat niet nul is, is een notatie van de vorm:
A= m* q n ,
Waar
m is de mantisse van het getal (een echte breuk waarin het eerste cijfer na de komma niet gelijk is aan nul),
q is de basis van het systeem,
n - nummervolgorde.

Voorbeelden:
1. 3,1415926 = 0, 31415926 * 101;
2. 1000=0,1 * 104;
3. 0,123456789 = 0,123456789 * 100;
4. 0,00001078 = 0,1078 * 8-4; (de bestelling is geschreven in het 10e systeem)
5. 1000,00012 = 0, 100000012 * 24.

Bij het weergeven van getallen met drijvende komma wordt een deel van de cijfers van de cel toegewezen om de volgorde van het getal vast te leggen, de overige cijfers worden toegewezen om de mantisse vast te leggen. Eén cijfer in elke groep wordt toegewezen om het orderteken en het mantisseteken weer te geven.

Doel van de dienst. De online rekenmachine is ontworpen om reële getallen in drijvende-komma-indeling weer te geven.

Nummer

vertegenwoordigd in het 10 2-nummersysteem.
Vertegenwoordig het getal in:
genormaliseerde exponentiële vorm
gedenormaliseerde exponentiële vorm
32-bits IEEE 754-formaat
64-bits IEEE 754-formaat
Converteer terug naar decimale notatie

Regels voor het invoeren van cijfers

  1. Getallen in het decimale getallensysteem kunnen zonder breuk of met worden ingevoerd fractioneel deel (234234.455).
  2. Getallen in het binaire getalsysteem bestaan ​​alleen uit de cijfers 0 en 1 (10100.01).
  3. Getallen in het hexadecimale getallensysteem bestaan ​​uit de cijfers 0...9 en de letters A...F.
  4. U kunt ook de omgekeerde weergave van de code krijgen (vanaf hexadecimaal systeem decimale berekening, 40B00000)
Voorbeeld nr. 1. Geef het getal 133,54 weer in drijvende-kommavorm.
Oplossing. Laten we het getal 133,54 in genormaliseerde exponentiële vorm weergeven:
1,3354*10 2 = 1,3354*exp 10 2
Het getal 1,3354*exp 10 2 bestaat uit twee delen: de mantisse M=1,3354 en de exponent exp 10 =2
Als de mantisse zich in het bereik 1 ≤ M bevindt Weergave van een getal in gedenormaliseerde exponentiële vorm.
Als de mantisse zich in het bereik 0,1 ≤ M bevindt, stellen we het getal in gedenormaliseerde exponentiële vorm voor: 0,13354*exp 10 3

Voorbeeld nr. 2. Vertegenwoordigt het binaire getal 101.10 2 in genormaliseerde vorm, geschreven in de 32-bits IEEE754-standaard.
Oplossing.
Weergave van een binair getal met drijvende komma in exponentieel genormaliseerde vorm.
Laten we het getal 2 cijfers naar rechts verschuiven. Als resultaat hebben we de belangrijkste componenten van een exponentieel genormaliseerd binair getal verkregen:
Mantisse M=1,011
Exponent exp 2 =2
Converteer binair genormaliseerd getal naar 32-bits IEEE 754-formaat.
Het eerste bit wordt toegewezen om het teken van het getal aan te geven. Omdat het getal positief is, is het eerste bit 0
De volgende 8 bits (2e tot en met 9e) zijn gereserveerd voor de exponent.
Om het teken van de exponent te bepalen, om niet nog een tekenbit te introduceren, voegt u een offset toe aan de exponent van een halve byte +127. Onze exponent is dus: 2 + 127 = 129
Laten we de exponent omzetten in een binaire representatie.
De overige 23 bits zijn gereserveerd voor de mantisse. In een genormaliseerde binaire mantisse is het eerste bit altijd gelijk aan 1, aangezien het getal in het bereik 1 ≤ M ligt. Om het gehele deel te converteren, moet je het cijfer van het getal vermenigvuldigen met de overeenkomstige cijfermacht.
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
IN decimale code De mantisse wordt uitgedrukt als 3145728
Als gevolg hiervan is het getal 101.10, weergegeven in IEEE 754 met enkele precisie, gelijk aan.
Laten we converteren naar hexadecimale weergave.
Laten we verdelen broncode in groepen van 4 categorieën.
2 = 0100 0000 1011 0000 0000 0000 0000 0000 2
We krijgen het nummer:
0100 0000 1011 0000 0000 0000 0000 0000 2 = 40B00000 16

Iedereen die er ooit aan heeft gedacht om ‘IT-specialist’ te worden of systeembeheerder, en het eenvoudigweg koppelen van iemands lot aan kennis over hoe getallen worden weergegeven, is absoluut noodzakelijk. Dit is tenslotte waar programmeertalen op gebaseerd zijn. laag niveau, zoals Assembler. Daarom zullen we vandaag kijken naar de weergave van getallen in een computer en hun plaatsing in geheugencellen.

Notatie

Als je aan het lezen bent dit artikel, dan weet je dit waarschijnlijk al, maar het is de moeite waard om te herhalen. Alle gegevens binnen persoonlijke computer opgeslagen in binair Dit betekent dat elk getal in de juiste vorm moet worden weergegeven, dat wil zeggen bestaande uit nullen en enen.

Om de ons bekende decimale getallen om te zetten naar een vorm die voor een computer begrijpelijk is, moet u het hieronder beschreven algoritme gebruiken. Er zijn ook gespecialiseerde rekenmachines.

Om een ​​getal naar het binaire getalsysteem te converteren, moeten we dus de door ons gekozen waarde delen door 2. Hierna krijgen we het resultaat en de rest (0 of 1). We delen het resultaat opnieuw door 2 en onthouden de rest. Deze procedure moet worden herhaald totdat het eindresultaat ook 0 of 1 is. Vervolgens schrijven we de eindwaarde en de resten erin omgekeerde volgorde hoe we ze hebben ontvangen.

Dit is precies hoe getallen in een computer worden weergegeven. Elk getal wordt in binaire vorm geschreven en neemt vervolgens een geheugencel in beslag.

Geheugen

Zoals je al weet, is de kleinste informatie-eenheid 1 bit. Zoals we al hebben ontdekt, worden getallen in een computer in binair formaat weergegeven. Elk bit geheugen wordt dus bezet door één waarde: 1 of 0.

Voor opslag worden cellen gebruikt. Elke dergelijke eenheid bevat maximaal 8 bits aan informatie. Daarom kunnen we dat concluderen minimale waarde in elk geheugensegment kan 1 byte zijn of een binair getal van acht cijfers.

Geheel

Tenslotte komen we bij het direct plaatsen van gegevens op de computer. Zoals eerder vermeld, converteert de processor informatie eerst naar binair formaat en plaatst deze pas daarna in het geheugen.

Laten we beginnen bij het begin eenvoudige optie, wat de weergave is van gehele getallen in een computer. Het pc-geheugen wijst voor dit proces een belachelijk klein aantal cellen toe: slechts één. Maximaal één slot kan dus waarden hebben van 0 tot 11111111. Laten we vertalen maximaal aantal in de opnamevorm die we kennen.
X = 1 × 2 7 + 1 × 2 6 + 1 × 2 5 + 1 × 2 4 + 1 × 2 3 + 1 × 2 2 + 1 × 2 1 + 1 × 2 0 = 1 × 2 8 - 1 = 255 .

Nu zien we dat één geheugencel een waarde van 0 tot 255 kan bevatten. Dit geldt echter uitsluitend voor niet-negatieve gehele getallen. Als de computer een negatieve waarde moet schrijven, werkt alles een beetje anders.

Negatieve cijfers

Laten we nu eens kijken hoe getallen in een computer worden weergegeven als ze negatief zijn. Om een ​​waarde te accommoderen die kleiner is dan nul, worden twee geheugencellen, oftewel 16 bits aan informatie, toegewezen. In dit geval staat 15 onder het getal zelf en wordt het eerste (meest linkse) bit onder het overeenkomstige teken gegeven.

Als het getal negatief is, wordt “1” geschreven, indien positief, dan “0”. Om het gemakkelijker te onthouden, kunnen we de volgende analogie trekken: als er een teken is, plaatsen we 1, als het er niet is, dan niets (0).

De overige 15 bits aan informatie worden aan het nummer toegewezen. Net als in het vorige geval kunnen ze maximaal vijftien eenheden huisvesten. Het is vermeldenswaard dat het schrijven van negatieve en positieve getallen aanzienlijk van elkaar verschilt.

Om in 2 geheugencellen een waarde groter dan of gelijk aan nul te plaatsen, wordt gebruik gemaakt van de zogenaamde directe code. Deze operatie wordt op dezelfde manier geproduceerd als beschreven, en de maximale A = 32766, indien gebruikt zou ik dat meteen willen vermelden in dit geval"0" verwijst naar positief.

Voorbeelden

Het weergeven van gehele getallen in het computergeheugen is niet zo'n moeilijke taak. Hoewel het iets ingewikkelder wordt als waar we het over hebben over negatieve betekenis. Om een ​​getal te schrijven dat kleiner is dan nul, wordt de twee-complementcode gebruikt.

Om dit te verkrijgen, voert de machine een aantal hulpbewerkingen uit.

  1. Eerst wordt de modulus van een negatief getal geschreven binair getal. Dat wil zeggen, de computer onthoudt een vergelijkbare, maar positieve waarde.
  2. Elk bit geheugen wordt vervolgens omgekeerd. Om dit te doen, worden alle enen vervangen door nullen en omgekeerd.
  3. Voeg "1" toe aan het resultaat. Dit zal de aanvullende code zijn.

Laten we geven duidelijk voorbeeld. Laten we een getal X = - 131 hebben. Eerst bepalen we de modulus |X|= 131. Vervolgens converteren we het naar het binaire systeem en schrijven we het in 16 cellen. We krijgen X = 0000000010000011. Na inversie is X = 1111111101111100. We voegen er “1” aan toe en krijgen de retourcode X=1111111101111101. Om naar een 16-bits geheugencel te schrijven, is het minimumaantal X = - (2 15) = - 32767.

Lange gehele getallen

Zoals u kunt zien, is het weergeven van reële getallen op een computer niet zo moeilijk. Het beschouwde bereik is echter mogelijk niet voldoende voor de meeste activiteiten. Om grote aantallen te kunnen verwerken, wijst de computer daarom 4 cellen, oftewel 32 bits, uit het geheugen toe.

Het opnameproces verschilt absoluut niet van het hierboven gepresenteerde proces. We geven dus alleen het bereik van getallen weer die in dit type kunnen worden opgeslagen.

Xmax =2.147.483.647.

X min = - 2 147 483 648.

In de meeste gevallen zijn deze waarden voldoende om bewerkingen met gegevens vast te leggen en uit te voeren.

Het weergeven van reële getallen in een computer heeft zijn voor- en nadelen. Aan de ene kant maakt deze techniek het gemakkelijker om bewerkingen uit te voeren tussen gehele waarden, wat de processor aanzienlijk versnelt. Aan de andere kant is dit bereik niet voldoende om de meeste problemen in de economie, natuurkunde, rekenkunde en andere wetenschappen op te lossen. Daarom zullen we nu een andere techniek voor supermagnitudes overwegen.

drijvende punt

Dit is het laatste dat u moet weten over het weergeven van getallen op een computer. Omdat er bij het schrijven van breuken een probleem is bij het bepalen van de positie van de komma daarin, wordt wetenschappelijke notatie gebruikt om dergelijke cijfers in de computer te plaatsen.

Elk getal kan daarin worden weergegeven volgende vorm X = m * p n. Waar m de mantisse van het getal is, p de basis van het getalsysteem en n de volgorde van het getal.

Om de registratie van getallen met drijvende komma te standaardiseren, wordt de volgende voorwaarde gebruikt, volgens welke de modulus van de mantisse groter dan of gelijk moet zijn aan 1/n en kleiner dan 1.

Laten we het nummer 666.66 krijgen. Laten we het in exponentiële vorm zetten. Het blijkt dat X = 0,66666 * 10 3. P = 10 en n = 3.

Drijvende-kommawaarden krijgen doorgaans 4 of 8 bytes (32 of 64 bits) toegewezen. In het eerste geval wordt het een normaal precisiegetal genoemd, en in het tweede geval een dubbel precisiegetal.

Van de 4 bytes die zijn toegewezen voor het opslaan van cijfers, wordt er 1 (8 bits) toegewezen voor gegevens over de volgorde en het teken ervan, en worden 3 bytes (24 bits) gebruikt om de mantisse en het teken ervan op te slaan volgens dezelfde principes als voor gehele waarden . Als we dit weten, kunnen we eenvoudige berekeningen uitvoeren.

Maximale waarde n = 1111111 2 = 127 10. Op basis daarvan kunnen we het krijgen maximale grootte nummer dat in het computergeheugen kan worden opgeslagen. X=2 127 . Nu kunnen we de maximaal mogelijke mantisse berekenen. Het zal gelijk zijn aan 2 23 - 1 ≥ 2 23 = 2 (10 × 2,3) ≥ 1000 2,3 = 10 (3 × 2,3) ≥ 10 7. Als gevolg hiervan ontvingen we een geschatte waarde.

Als we nu beide berekeningen combineren, krijgen we een waarde die zonder verlies in 4 bytes geheugen kan worden geschreven. Het zal gelijk zijn aan X = 1,701411 * 10 38. De overige cijfers zijn weggegooid, omdat dit precies de nauwkeurigheid is die we kunnen bereiken deze methode records.

Dubbele precisie

Omdat alle berekeningen in de vorige paragraaf zijn beschreven en uitgelegd, zullen we hier alles heel kort vertellen. Voor getallen met dubbele precisie zijn er gewoonlijk 11 bits voor de exponent en zijn teken, en 53 bits voor de mantisse.

P = 1111111111 2 = 1023 10.

M = 2 52 -1 = 2 (10*5,2) = 1000 5,2 = 10 15,6. Rond naar grote kant en we krijgen het maximale aantal X = 2 1023 nauwkeurig tot “m”.

We hopen dat de informatie die we hebben gegeven over de weergave van gehele getallen en reële getallen in een computer nuttig voor je zal zijn bij je studie en op zijn minst een beetje duidelijker zal zijn dan wat gewoonlijk in leerboeken staat.

Algemene informatie.

Gegevenstype- Dit binaire code, met bekende eigenschappen volgens geaccepteerde conventies. De processor herkent (met behulp van opdrachten) het gegevenstype en voert een voorgeschreven reeks bewerkingen op de gegevens uit.

De volgende gegevenstypen worden hieronder besproken:

● s ondertekende en niet-ondertekende gehele getallen, gebruikt om gehele getallen weer te geven in de vorm van binaire codes en er rekenkundige bewerkingen op uit te voeren volgens de regels van de binaire rekenkunde;

BCD gehele getallen, ontworpen om decimale getallen weer te geven en te verwerken;

Booleaans gegevenstype, ter ondersteuning van de regels van de algebra-logica (Booleaanse algebra);

typen met vaste en drijvende komma, ontworpen voor het weergeven en verwerken van reële getallen.

De keuze van het gegevenstype wordt bepaald door het programmacommando. Wanneer u bijvoorbeeld een rekenkundige instructie uitvoert, worden de gegevens behandeld als gehele getallen, waarbij de operanden in logische werking worden geaccepteerd als een Booleaans gegevenstype, en een 16-bits pointer wordt door de instructie gebruikt om toegang te krijgen tot gegevens in het huidige segment.

Merk op dat in programma's in talen hoog niveau Er kunnen gegevenstypen zijn waarvoor de processor geen hardwareondersteuning heeft. Een voorbeeld hiervan zijn gegevenstypen met drijvende komma in een Fort Run-programma dat wordt uitgevoerd in computersysteem zonder coprocessor. In dit geval worden de berekeningen gebruikt extra opdrachten voor het modelleren van drijvende-kommagegevenstypen. Als er een co-processor in het systeem zit (en een Fortran-compiler daarvoor), zal het programma uiteraard veel sneller worden uitgevoerd.

Over de vormen van het weergeven van getallen.

Er worden veel twee vormen gebruikt om getallen weer te geven: natuurlijk en normaal.

Bij natuurlijk in de vorm van representatie heeft het nummer één type opname, bijvoorbeeld: +195 - positief geheel getal; –195 is een negatief geheel getal; +0,025 - juiste positieve fractie; –195,025 is een onechte negatieve breuk. Dit formulier wordt gebruikt om gehele getallen en komma-getallen weer te geven.

Bij normaal representatieformulier, het nummer wordt in het formulier geschreven

waarbij M, P de mantisse en de volgorde van het getal zijn.

De normale weergavevorm wordt gekenmerkt door een dubbelzinnige notatie van het getal, bijvoorbeeld: +195,025 = +195025. 10 –3 = +19,5025. 10 1 = +0,195025 . 10 3. Zoals uit het voorbeeld blijkt, hangt de positie van het mantissepunt af van de waarde van de orde P. Bij een verandering in P (wat altijd gebeurt tijdens het berekeningsproces) lijkt het punt te gaan zweven. Daarom wordt de normale vorm (2.3.1) ook wel de vorm van weergave van drijvende-kommagetallen genoemd.

Numerieke (net als alle andere) informatie die onderworpen is aan verwerking door de processor, wordt weergegeven in het formulier

– bit binaire codes, voor het opslaan van welke geheugencellen worden gebruikt. Binaire getalcodes hebben verschillende formaten.

Het getalformaat is een verzameling bits (bitraster), verdeeld in afzonderlijke velden: het nummertekenveld, het getalmodulusveld, het mantisseveld, het ordemodulusveld, enz. Om de bits van de velden te nummeren, wordt een reeks van Er wordt gebruik gemaakt van getallen, beginnend bij nul (0, 1, 2, 3, …).

Niet-ondertekende gehele getallen.

Dit gegevenstype wordt gebruikt om nul- en positieve gehele waarden weer te geven.

In afb. 2.3.1, en de formaten van 8-bit gehele getallen worden gegeven. Er is geen tekenbit, dus het bereik van getallen is 0…2

De bitdiepte van de binaire code is hetzelfde als de bitbreedte van het getal.

Getekende gehele getallen.

De bewerking van het aftrekken van twee positieve getallen A en B kan worden beschouwd als een bewerking van het algebraïsch optellen van getallen met verschillende tekens: A – B = A + (–

). Om de rekenkundige bewerking van het aftrekken te vervangen door de bewerking van algebraïsche optelling, is het daarom noodzakelijk om op de een of andere manier het teken van het getal weer te geven. Normaal gesproken wordt een extra bit toegewezen voor het teken van een binair getal. Het teken van het getal wordt aangegeven in het meest significante cijfer: 0 komt overeen met het positieve teken “+” van het getal, 1 - met het negatieve teken “–”.

Om ondertekende nummers weer te geven, wordt het veel gebruikt aanvullend code.

Om gehele getallen weer te geven positief binaire getallen in

– in de complementcode van de bit moeten alle meest significante bits (inclusief de tekenbit) gevuld zijn met nullen.

Voor presentatie negatief nummers nodig:

● alle significante omkeren digitale cijfers(modulus)getallen;

● voeg één toe aan de resulterende waarde;

● vul alle belangrijkste cijfers (inclusief de tekencijfers) met enen.

De 8-bits twee-complementcode voor een positief getal +6 is bijvoorbeeld 00000110, voor een negatief getal - 6 - 11111010.

In afb. 2.3.1, b toont de formaten van 8-bit ondertekende nummers in aanvullende code. Het bereik van hun weergave is – 2 (

–1) - cijfercapaciteit van het significante deel van het nummer. Moderne microprocessoren ondersteunt gehele getallen met teken van 16, 32 en 64 bits. Er zijn twee veelgebruikte gehele formaten: kort met het aantal cijfers

En lang met het aantal cijfers 2

Bij het berekeningsproces wordt het lange formaat gebruikt, de resultaten worden in het korte formaat weergegeven. Als het aantal significante cijfers van de modulus van een getal groter is dan (

– 1), loopt het bitraster over, wat leidt tot een fout in de weergave van het getal als gevolg van het verlies van de belangrijkste bits van de module. Na het uitvoeren van rekenkundige bewerkingen wordt het resultaat dat buiten het bereik valt gemarkeerd door de overloopvlag O op één te zetten

Vaste puntnummers.

In de natuurlijke vorm van het weergeven van reële getallen wordt de positie van het punt (komma) vastgelegd tussen de gehele en gebroken delen van het getal. Om de positie van een punt in een reëel getal te veranderen, is het noodzakelijk een schaalfactor te introduceren, waarvan de waarde zo moet worden gekozen dat de waarde van het reële getal ongewijzigd blijft. Vaak wordt het punt vóór de meest significante cijfers van de modulus van het getal vastgesteld. In dit geval heeft de weergave van het getal A met een vast punt de vorm van een echte breuk, die overeenkomt met de voorwaarde

Het geselecteerde aantal significante cijfers van een getal.

Voor de initiële gegevens van het probleem en alle tussenresultaten van berekeningen moet aan voorwaarde (2.3.2) worden voldaan, wat wordt verzekerd door de schaalfactor K te kiezen.

Als voorwaarde (2.3.2) wordt geschonden, heeft het getal А Ф een geheel getal, dat verloren gaat omdat het door overflow niet in het bitraster valt. Daarom moet men bij het bepalen van de schaalfactor K uitgaan van de maximale waarde van de module van de getallen die betrokken zijn bij het oplossen van het probleem, waarbij K> | Een |

Dan is voldaan aan voorwaarde (2.3.2) voor А Ф = А/К.

In afb. 2.3.2, en het formaat van de computerweergave van getallen AF met een vast punt wordt gegeven. Wanneer het getal AF in een geheugencel wordt ingevoerd, worden de vrije cijfers van lage orde van het bitraster gevuld met nullen. Als het nummer

significante cijfers van de module |

– 1, dan de bits van lage orde van de module die er niet in passen

– bitraster, gaan verloren. Dit leidt tot een fout waarvan de absolute waarde kleiner is dan één van de minst significante cijfers van het bitraster, d.w.z.

32 absolute fout

0,5×10 – 30x0,3 = 0,5×10 – 9

Geef twee getallen A = –1010.101 2 en B = +10.10101 2, waarvoor |

Daarom is de schaalfactor K > |

2 4 = 10000 2. Macht 4 geeft aan dat de oorspronkelijke getallen 4 cijfers naar rechts moeten worden verschoven

Echt

A.K= –1010,101. 10000 =

–0.1010101 2 ;

VF = V. K = 10,10101. 10000 = 0,001010101 2 . De formaten voor het weergeven van getallen А Ф en В Ф worden getoond in Fig. 2.3.2.6, c. Om de nauwkeurigheid van de computerweergave van het getal VF te behouden, is het noodzakelijk om het bitraster uit te breiden naar 10 bits.

Het voordeel van het weergeven van getallen in de vorm van een vast punt is het gemak van het uitvoeren van rekenkundige bewerkingen. De nadelen zijn dat:

● het is noodzakelijk om schaalfactoren te selecteren;

● nullen in de meest significante bits van de module leiden tot een afname van het aantal bits dat wordt ingenomen door het significante deel van de module van het nummer. Als gevolg hiervan neemt de nauwkeurigheid van het weergeven van getallen met kleine moduluswaarden af.

Booleaanse typen.

Booleaanse waarden zijn niet ondertekend en worden gebruikt in logische bewerkingen

etc. De bewerking wordt uitgevoerd op individuele bits. Booleaanse operanden worden in delen verwerkt als hun bitcapaciteit groter is dan de bitcapaciteit van de processor.

Binaire decimale gehele getallen.

IN het dagelijks leven mensen gebruiken het decimale getalsysteem. Voor het opslaan en verwerken van decimale getallen in digitale apparaten ze worden weergegeven als binaire code. Een weergave van een decimaal getal waarin elk decimaal cijfer wordt weergegeven door de binaire tekens 0 en 1, wordt BCD genoemd. Omdat het decimale systeemalfabet uit 10 cijfers bestaat, wordt elk decimaalcijfer geschreven in een woord dat ten minste vier cijfers bevat. Het meest gebruikte woord is een 4-bits woord dat een tetrad of knabbel wordt genoemd. Door tetrads te gebruiken, in plaats van de vereiste 10, kun je 2 4 = 16 verschillende combinaties van gecombineerde symbolen 0 en 1 krijgen. Bij binaire decimale codering moeten verschillende decimale cijfers overeenkomen diverse combinaties symbolen O en 1, d.w.z. slechts 10 van de 16 combinaties zijn toegestaan. De aanwezigheid van toegestane en verboden combinaties is een belangrijke eigenschap van binaire decimale codes. Deze eigenschap onderscheidt ze van gewoon positioneringssystemen Getallen waarin alle combinaties zijn toegestaan. Het totaal aantal verschillende toegestane 4-bits codes (tetrads), bepaald door combinaties van 16 elementen van 10, is: C 10 16 = 18008. De zogenaamde code 8421, die gebruik maakt van de eerste tien waarden van binaire getallen uit 0000 (0 10), wordt veel gebruikt tot 1001 (9 10).

Het voordeel van 4-cijferige codes is dat er bij het coderen van decimale getallen gebruik van wordt gemaakt minimale hoeveelheid ontladingen. Door de introductie van een extra 5e cijfer kunt u fouten tijdens de verzending detecteren numerieke informatie via communicatielijnen in aanwezigheid van interferentie. In een 5-bits code 2 uit 5 bevatten alle codecombinaties bijvoorbeeld twee enen en drie nullen. Daarom zal het wijzigen van een cijfer (naar de tegenovergestelde waarde) leiden tot een verboden codecombinatie.

In afb. 2.3.3 toont het formaat van een binair decimaal getal dat 18 tetrads bevat (

0) en tekenbit

(de resterende bits van de hoge byte worden op nulwaarden ingesteld). Elke tetrad komt overeen met één decimaal.

Drijvende-kommagetallen.

Voor het uitvoeren van berekeningen is het in veel gevallen noodzakelijk om cijfers te presenteren hoge nauwkeurigheid in een breed scala aan waarden. Voldoet aan de gestelde eisen normale vorm cijfers (2.3.1). Om de kenmerken van het gebruik ervan voor het weergeven van drijvende-kommagetallen in te identificeren digitale systemen we gaan ervan uit dat:

● om de mantisse te schrijven, (

1) – bit binaire code, met de hoogste orde (

Het –de) cijfer bepaalt het teken van de mantisse (getal), de overige cijfers bepalen de modulus van de mantisse. De waarde van de modulus van de mantisse |M|< 1, что соот-ветствует фиксации точки перед значащими цифрами (разрядами) модуля мантиссы;

● om de volgorde P vast te leggen, wordt (p + 1)-bit binaire code gebruikt, waarbij het meest significante (p-de) cijfer het teken van de volgorde bepaalt, terwijl de overige cijfers de modulus van de volgorde bepalen. De volgorde P (geheel getal) geeft de werkelijke positie van het punt in het getal aan.

In afb. 2.3.4, en het formaat van een drijvende-kommagetal wordt gegeven.

De nauwkeurigheid van de getalweergave (2.3.1) hangt af van het aantal significante cijfers (cijfers) van de mantisse. Om de nauwkeurigheid te vergroten, worden getallen met drijvende komma gepresenteerd in een genormaliseerde vorm, wat wordt aangegeven door de aanwezigheid aanzienlijk cijfer(eenheden voor

2) in het meest significante cijfer van de mantissemodule. De moduluswaarde van de genormaliseerde mantisse bij

2 ligt binnen 2 –1 ≤ |M|< 1 (для любых порядков П). В нормализованной форме могут быть представлены все числа из некоторого диапазона за исключением нуля.

Laten we het weergeven in drijvende-komma-indeling binaire getallen A = +10010,10101 en B = –111,0101. Laten we A en B in genormaliseerde vorm schrijven

EEN = +0,1001010101 . 2 5 , V= –0,1110101000 . 2–3.

Gebaseerd op (2.3.4) schrijven we de modules van de mantisse |M

| = 1001010101 2 , |M

| = 1110101000 2 en bestel modules in het binaire systeem |P A | = 5 10 = 0101 2 , |P

| = 3 10 = 0011 2 . Selecteer het totale aantal cijfers van het bitraster

P = 16. We accepteren het aantal cijfers voor de mantissemodule als 10, voor de bestelmodule als 4.

De notaties van de getallen A en B worden getoond in Fig. 2.3.4, 6, c. De mantisse en de volgorde van operand B, die een negatieve waarde hebben, worden weergegeven in de twee-complementcode:

|# + 1 = 0001010111 + 1 = 0001011110;

|# + 1 = 0011 + 1 = 0100, waarbij # de inversie is.

Omdat de absolute fout bij het weergeven van getallen met drijvende komma afhangt van de orde van P, zullen we een schatting geven van de relatieve fout:

/ 2 –1 = 2 –(

Absolute fout in de weergave van de module

– beetje mantisse; |

22 –1 - de minimumwaarde van de genormaliseerde modulus van de mantisse.

Let er wel op in de standaard

754/854 gebruikt een volgorde in de vorm P = P – E, waarbij E =

Ordercompensatie; Pmax = 2E. Hierdoor konden we het veld uitsluiten

bestelteken in nummerweergaveformaat.