Flyttal kan också hantera vanliga tal som både 16- och 32-bitars dataregister hanterar.

Relevanta dokument
Datorsystemteknik DVG A03 Föreläsning 3

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

F2 Datarepresentation talbaser, dataformat och teckenkodning EDAA05 Datorer i system! Roger Henriksson!

F2 Datarepresentation talbaser, dataformat och teckenkodning

Digital- och datorteknik

Datorsystem. Övningshäfte. Senast uppdaterad: 22 oktober 2012 Version 1.0d

IE1205 Digital Design: F6 : Digital aritmetik 2

Struktur: Elektroteknik A. Digitalteknik 3p, vt 01. F1: Introduktion. Motivation och målsättning för kurserna i digital elektronik

Talsystem Teori. Vad är talsystem? Av Johan Johansson

I denna laboration undersöker vi hur aritmetiska beräkningar utförs. Vi tittar på olika variabeltyper: 8-bitars, 16-bitars, 32-bitars och flyttal.

Datorsystem. Tentamen

F2 Binära tal EDA070 Datorer och datoranvändning

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Digital elektronik CL0090

Styrteknik: MELSEC FX och numeriska värden

Digital- och datorteknik

Datoraritmetik. Från labben. Från labben. Några exempel

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

6. Ge korta beskrivningar av följande begrepp a) texteditor b) kompilator c) länkare d) interpretator e) korskompilator f) formatterare ( pretty-print

Förenklad förklaring i anslutning till kompedieavsnitten 6.3 och 6.4

ÖH kod. ( en variant av koden används i dag till butikernas streck-kod ) William Sandqvist

7 november 2014 Sida 1 / 21

n Kap 4.1, 4.2, (4.3), 4.4, 4.5 n Numerisk beräkning av derivata med n Felen kan t ex vara avrundningsfel eller mätfel n Felet kan mätas

Digital- och datorteknik

Maskinorienterad Programmering /2011. Maskinorienterad Programmering 2010/11. Maskinnära programmering C och assemblerspråk

DIGITALA TAL OCH BOOLESK ALGEBRA

Q64AD, Q68ADV/ADI, analoga ingångsmoduler KI00105E

Datorsystem. Tentamen

Föreläsning 8: Aritmetik och stora heltal

LAB 1. FELANALYS. 1 Inledning. 2 Flyttal. 1.1 Innehåll. 2.1 Avrundningsenheten, µ, och maskinepsilon, ε M

Extramaterial till Matematik Y

Övningsuppgifter till föreläsning 2 Variabler och uttryck

Teknisk Beräkningsvetenskap I Tema 1: Avrundning och populationsmodellering

Talrepresentation. Ett tal kan representeras binärt på många sätt. De vanligaste taltyperna som skall representeras är:

LABORATIONSINSTRUKTION

Digital- och datorteknik

i LabVIEW. Några programmeringstekniska grundbegrepp

IE1204 Digital Design

Arduinokurs. Kurstillfälle 4

Beräkningsvetenskap och Matlab. Vad är MATLAB? Vad är MATLAB? Användningsområden. Vad är MATLAB? Grunderna i Matlab. Beräkningsvetenskap == Matlab?

AD-DA-omvandlare. Mätteknik. Ville Jalkanen. 1

PNSPO! Adressering i Omrons PLC. 14 mars 2012 OMRON Corporation

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

Analog till Digitalomvandling

Analog till Digitalomvandling

Kort beskrivning av Sveriges första dator BESK

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

Laboration 5. Temperaturmätning med analog givare. Tekniska gränssnitt 7,5 p. Förutsättningar: Uppgift: Temperatur:+22 C

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Nu till dagens ämne: Vi rekapitulerar det första problemet ur ProblemI:

Enkla datatyper minne

Tentamen PC-teknik 5 p

Introduktion till programmering och Python Grundkurs i programmering med Python

Datorteknik 2 (AVR 2)

Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Tenta i Digitalteknik

Det finns en hemsida. Adressen är

Digital Aritmetik Unsigned Integers Signed Integers"

Moment 2 - Digital elektronik. Föreläsning 1 Binära tal och logiska grindar

TANA19 NUMERISKA METODER

Tentamen i Digitala system - EDI610 15hp varav denna tentamen 4,5hp

2-14 Binära talsystemet-fördjupning Namn:

PC-teknik, 5 p LABORATION ASSEMBLERINTRODUKTION

COBOL. från grunden. monitors. Peter Sterwe. training people

Grunderna i stegkodsprogrammering

PARITETSKONTROLL. Om generatorn i vidstående exempel avkänner ett jämt antal ettor ger den en nolla ut. Detta innebär att överföringen

Mattias Wiggberg Collaboration

TDDC77 Objektorienterad Programmering

Extrauppgifter för CPU12

Data, typ, selektion, iteration

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Tentamen. TSEA22 Digitalteknik 5 juni, 2015, kl

Institutionen för elektro- och informationsteknologi, LTH

Innehåll. Datorteknik. Abstraktionsnivå 1. Spelkonsol - blockschema. Spelkonsol abstraktionsnivå 2. Abstraktionsnivå 2

Tentamen: Numerisk Analys MMG410, GU

Minneselement,. Styrteknik grundkurs. Digitala kursmoment. SR-latch med logiska grindar. Funktionstabell för SR-latchen R S Q Q ?

Digitalteknik och Datorarkitektur

KALKYLATOR LABORATION4. Laborationens syfte

Uppgift 1 ( Betyg 3 uppgift )

F2 Datarepresentation talbaser, dataformat och teckenkodning

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Feluppskattning och räknenoggrannhet

Uppgift 1a (Aktiekurser utan poster)

Datorsystem. Tentamen

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

Maskinorienterad programmering. Kompendium: Aritmetik för HC12 Roger Johansson, 2013

0.1. INTRODUKTION Instruktionens opcode decodas till en språknivå som är förstålig för ALUn.

Kapitel 2. Feluppskattning och räknenoggrannhet

Föreläsning 2 - Intro till Java

Arbetsblad 1:10. Avrundning. 1 a) 17,8 b) 156,3 c) 19,09 2 a) 30,49 b) 6,85 c) 49,64

DE FYRA RÄKNESÄTTEN (SID. 11) MA1C: AVRUNDNING

Digital- och datorteknik

Objektorienterad programmering Föreläsning 2

Blandade uppgifter om tal

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

"Crash Course in Programming"

Transkript:

FLYTTAL REAL Flyttal används i datorsystem för s k flytande beräkning vilket innebär att decimalkommat inte har någon fix (fast) position. Flyttal består av 2 delar (mantissa och exponent). När ett datorsystem ska hantera och utföra beräkningar av mycket stora tal som inte en dubbeloperand (32-bitars dataregister t ex DINT) kan hantera eller om det är fråga om mycket små tal är flyttal lösningen. Små tal Ett dataregister (16- eller 32-bitars) kan inte hantera / presentera decimaler. Eventuella decimaler ur en beräkning försummas eller placeras i följande dataregister men då dock som en rest (inte decimalen). Minsta tal ett flyttal kan representera ±1,175x10-38 vilket motsvarar binär exp på -126 Stora tal Ett 16-bitars dataregister kan hantera tal mellan -32.768 till +32.767 och ett 32-bitars dataregister talen -2.147.483.647 till +2.147.483.646 Största tal ett flyttal kan representera ±3,403x10 38 vilket motsvarar binär exp på +127 Flyttal som lösning Räcker inte dessa intervall till för beräkningar kan flyttal tas vid, de kan hantera tal med en exponent -38 till +38 (-126 till +127 binärt) Exempel: 1,8x10 19 18000000000000000000 1,25x10-12 0,00000000000125 Flyttal kan också hantera vanliga tal som både 16- och 32-bitars dataregister hanterar. Struktur flyttal Flyttal består av 2 delar (mantissa och exponent). Mantissan motsvarar decimalen och exponenten är dess multiplikator. 1 (10)

FLYTTAL (REAL) +D D b15 b0 b15 b0 HEX BIN b31 b16 b15 b0 ± Exponent b30-b23 Mantissa b22-b0 ± Teckenbit 0 = plus, 1 = minus Ett flyttal upptar 2 dataregister i följd. De 2 registerna samverkar så att b0-b15 i det lägre registret och b0-b6 i det högre registret upptar flyttalets mantissa där decimalen finns representerad. Det motsvarar totalt 23 bitar. b7-b14 i det högre registret upptar flyttalets exponent. b15 i det högre registret är tecken-bit (+ eller -). Definiera ett flyttal När man ska definiera en variabel som flyttal anger man type REAL De kan definieras lokalt och globalt. 2 (10)

Omvandling av tal För att kunna hantera tal som flyttal måste de konverteras till flyttal. Instruktionen heter FLT / DFLT beroende på om det är fråga om ett INT eller DINT När flyttalet ska omvandlas till INT eller DINT heter instruktionen INT eller DINT INT REAL (16-bitars reg flyttal) REAL INT (flyttal 16-bitars reg) DINT REAL (32-bitars reg flyttal) REAL DINT (flyttal 32-bitars reg) 3 (10)

Flyttalets presentation Beroende på om exponent fordras eller ej ser talet ut olika. Tal som inte fordrar exponent (1250) Tal som fordrar exponent (2,675x10 11 =267500000000) Exempel på mycket stort tal och mycket litet tal 4 (10)

Flyttalsberäkning i GX IEC Developer Matematiska beräkningar av flyttal kräver ett ingångsvillkor som kan gå ON/OFF. En TRUE-funktion accepteras normalt inte av programmet. Däremot kan TRUE användas för omvandling från INT/DINT till FLT och tvärtom. Avrundning av tal När ett flyttal omvandlas till INT eller DINT kommer eventuella decimaler att reduceras bort helt. Därför ska man beakta att inte omvandla alltför många gånger, då felet kan växa. Sträva efter att flyttalet omvandlas först när hela den matematiska beräkningen är klar innan omvandling till INT/DINT sker, då blir felet så litet som möjligt. Exempel 5 (10)

Att beräkna det decimala talet Att beräkna fram det decimala talet sker genom att beräkna exponent och mantissa på följande vis. Vi omvandlar ett 16-bitars tal (INT) VARDE_1 (D2) till flyttal (REAL) DELNING (D10+D11). Om vi skickar in det decimala värdet 200 i variabel VARDE_1 presenteras detta i variabel DELNING med 200.0 Så här kommer den binära koden att se ut i D2 för talet 200. D2 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 b15 b0 Så här kommer flyttalets register att se ut för talet 200. D11 D10 0 1 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 b15 b0 b15 b0 D11 b15 b0 b15 b0 HEX 4 3 4 8 0 0 0 0 b31 b16 b15 b0 BIN 0 1 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 D10 ± Exponent b30-b23 Mantissa b22-b0 ± Teckenbit 0 = plus, 1 = minus Bit 23 utgör vikten 0. Följaktligen får bit 0 vikten -23 Teckenbit 0 = plus (+) Exponent 7 6 5 4 3 2 1 0 1x 2 + 1x2 + 1x2 128 + 0 + 0 + 0 + 0 + 4 + 2 + 0 = 134 Från exponenten subtraheras alltid talet 127 134 127 = 7 Exponenten är alltså 7 Eftersom varje cell är binär (kan bara anta 2 tillstånd 0 eller 1) blir multiplikatorn alltid 2 Vi kan nu skriva 2 7 Mantissa Mantissan ska alltid adderas med 1 enligt 1x2 0 (även om b0 är 0). Så här kommer det att se ut. 6 (10)

1x 2 1 + 0,5 + 0 + 0 + 0,0625 + 0 + 0 + 0... + 0 = 1,5625 Mantissan får nu talet 1,5625 0 1 2 3 4 5 6 7 + 1x2 + 1x2...0x Slutlig beräkning av det decimala talet Mantissa x Multiplikatorn exp 1,5625x 2 7 = 200 Eftersom teckenbiten (b31) är 0 blir talet plus (+). Ovanstående exempel visar att ett decimalt tal hanteras inte på samma vis som registerna INT och DINT. Därför kan man inte direkt utläsa talets värde i flyttalsregisterna. 2 23 Största exponenten för flyttal Om de 8 bitarna är 1 blir den maximalt +127 (motsvarar 10 38 ) Minsta exponenten för flyttal Om de bit0 i exponenten är 1 och de andra 0 blir den minimalt -126 (motsvarar 10-38 ) 7 (10)

Exempel 1 D201 D200 HEX 4 0 D 0 0 0 0 0 BIN 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 POS 7 6 5 4 3 2 1 0-1 -2-3 -4-5 -6-7 -8-9 -10-11 -12-13 -14-15 -16-17 -18-19 -20-21 -22-23 ± Exponent Mantissa Exponent 1x2 7 +0x2 6 +0x2 5 +0x2 4 +0x2 3 +0x2 2 +0x2 1 +1x2 0 128+0+0+0+0+0+0+1 129-127=2 ± =0=plus Mantissa 1x2 0 +1x2-1 +0x2-2 +1x2-3 +0x2-4 +0x2-5 +0x2-6 +0x2-7 +0x2-8 +0x2-9 +0x2-10 +0x2-11 +0x2-12 +0x2-13 +0x2-14 + 0x2-15 +0x2-16 +0x2-17 +0x2-18 +0x2-19 +0x2-20 +0x2-21 +0x2-22 +0x2-23 1+0,5+0+0,125+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0+0 1,625 RES + mantissa x exp + 1,625 x 2 2 = 6,5 (decimalt) Exponentens bas är alltid 2 eftersom det är fråga om binära tal Ovanstående flyttal motsvarar alltså det decimala talet 6,5 Exempel 2 D1 D0 HEX 3 D 4 C C C C D BIN 0 0 1 1 1 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 POS 7 6 5 4 3 2 1 0-1 -2-3 -4-5 -6-7 -8-9 -10-11 -12-13 -14-15 -16-17 -18-19 -20-21 -22-23 ± Exponent Mantissa RES Exponent 0x2 7 +1x2 6 +1x2 5 +1x2 4 +1x2 3 +0x2 2 +1x2 1 +0x2 0 0+64+32+16+8+0+2+0 122-127=-5 ± =0=plus Mantissa 0..-7 0x2 0 +1x2-1 +0x2-2 +0x2-3 +1x2-4 +1x2-5 +0x2-6 +0x2-7 +1x2-8 +1x2-9 +0x2-10 +0x2-11 +1x2-12 +1x2-13 +0x2-14 +0x2-15 +1x2-16 +1x2-17 +0x2-18 +0x2-19 +1x2-20 +1x2-21 +0x2-22 +1x2-23 -8..-20 0+0,5+0+0+0,0625+0,03125+0+0+3,90625x10-3 +1,953125x10-3 +0+0+2,44140625x10-4 +1,220703125x10-4 +0+0+1,525878906x10-5 +7,629394531x10-6 +0+0+9,536743164x10-7 + -21..-23 4,768371582x10-7 +0+1,192092896x10-7 + mantissa x exp + 1,6 x 2-5 -5 = 0,05 (decimalt) Exponentens bas är alltid 2 eftersom det är fråga om binära tal Ovanstående flyttal motsvarar alltså det decimala talet 0,05 8 (10)

Nyttan med flyttal Förhoppningsvis ska man nu kunna se nyttan med att använda flyttal. De kan som sagt hantera mycket stora tal och mycket små tal med decimaler. Om man är behöver utföra omfattande matematiska beräkningar i ett program kan övergång till flyttal göra att dels ev. decimaler inte försummas och själva valet av funktioner underlättas avsevärt. Eftersom varje matematisk funktion endast kan ta emot och returnera variabeltyper av viss typ måste dessa variabler vara rätt. Exempel För en MUL_M funktion måste de båda ingångarna (s1 och s2) vara av typen 16-bitars upplösning. Utgången (d) måste vara av typen 32-bitars. Här följer ett litet exempel Låt oss säga att man behöver följande lilla matematiska beräkning i en programdel. Vi förutsätter att typerna för variablerna TAL_1..TAL_5 överensstämmer med den typ som varje funktion kräver. Redan efter DDIV_M funktionen blir det stopp. Resultatet från den funktionen skall vara en ARRAY om 2st 32-bitars register. Detta värde leds in i den sista funktionen (MUL_M) vilken skall ha typen 16-bitars upplösnig på sina ingångar (s1 och s2). Detta kommer alltså inte att fungera. Alternativet blir att stympa sönder ARRAY till ett 16-bitars men då kan information gå förlorad. Det bästa alternativet är att göra om talen till flyttal och tillämpa flyttalsfunktioner för den matematiska beräkningen och när den är klar omvandla flyttalet (svaret) till antingen 16- eller 32-bitars. Det man också vinner på detta är att både stora och små tal hanteras vilket medför att svaret avrundas så snävt det går i systemet. Så skulle funktionen då se ut med flyttalsteknik. Vi måste även se till att variablerna TAL_1..TAL_5 är deklarerade som flyttal (REAL). OBS! Samtliga funktioner kräver variabeltypen REAL på alla in- och utgångar. 9 (10)

Exempel på flyttal Editorn -Strukturerad Text [ST] Monitoreringsläget Motsvarande program i Editorn Ladder [LD] 10 (10)