Digital- och datorteknik Föreläsning #2 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola Talomvandling Principer för omvandling mellan olika talsystem: Från binärt till oktalt/hexadecimalt talsystem: • Gruppering av binära siffror till ny siffra (fyll på med nollor vid behov) Från binärt/oktalt/hexadecimalt till decimalt talsystem: • Direkt decimal utvärdering av de olika positionernas värden Från decimalt till binärt/oktalt/hexadecimalt talsystem: • Upprepad division av heltalsdel • Upprepad multiplikation av bråktalsdel Avrundning efter omvandling: För binära resultat tillämpar vi avrundning nedåt, s k trunkering: • Man stryker de bråksiffror som inte längre behövs Ett talvärde N i ett positionssystem med bas r (även kallat radix) kan alltså uttryckas som: (Ekv. 2.1) Koefficienterna dk (k = -m, ..., n-1) representerar siffror i talsystemet. Antalet heltalssiffror är n och antalet bråktalssiffror är m. Sifferföljden tolkas som summan N där varje siffra får en potens av basen som vikt. Heltalsdel och bråktalsdel åtskiljs av en punkt (.) (Kommat används bara i det decimala talsystemet). Är punkten utelämnad består talet enbart av en heltalsdel. Siffran längst till vänster dn-1 sägs vara den mest signifikanta siffran (Most Significant Digit, MSD) och siffran längst till höger d-m den minst signifikanta siffran (Least Significant Digit , LSD). Talomvandling Om talsystemets bas r är mindre än 10 används de r första av de arabiska symbolerna 0-9 som siffror. Är basen större än 10 kompletteras siffrorna 0-9 med stora bokstäver ur alfabetet med början på bokstaven A. Detta illustreras i Tabell 2.1, där de trettiotvå första heltalen i några olika talsystem visas. Vi kommer i denna framställning att speciellt behandla de binära och hexadecimala talsystemen. Binärt till oktalt/hexadecimalt: bas 2 binärt bas 16 bas 10 bas 8 hexadecimalt oktalt decimalt 0 0 0 0 Exempel: 1 1 1 1 10 2 2 Binära talet (101 011)2 omvandlas till 2 11 3 motsvarande 100 oktala tal43(53)8. 43 4 101 5 5 5 110 6 6 6 111 7 7 7 1000 8 8 10 Exempel: 1001 9 9 11 1010 A 10 12 Binära talet (0100 till13 1011 1101) B 2 omvandlas 11 C motsvarande 1100 hexadecimala tal12(4D)16. 14 1101 D 13 15 1110 E 14 16 1111 F 15 17 bas 2 binärt 10000 10001 10010 10011 10100 10101 10110 10111 11000 11001 11010 11011 11100 11101 11110 11111 bas 16 bas 10 hexadecimalt decimalt 10 16 11 17 12 18 13 19 14 20 15 21 16 22 17 23 18 24 19 25 1A 26 1B 27 1C 28 1D 29 1E 30 1F 31 bas 8 oktalt 20 21 22 23 24 25 26 27 30 31 32 33 34 35 36 37 TABELL 2.1 TALVÄRDEN FÖR OLIKA TALBASER Eftersom de arabiska siffrorna förekommer i flera positionssystem, kan man inte alltid avgöra i vilket talsystem ett tal är kodat genom att enbart betrakta talets siffror. För att undvika missförstånd brukar man därför innesluta talet i en parentes och ange talsystemets bas som index till parentesen. Talomvandling Binärt/oktalt/hexadecimalt till decimalt:Binära koder och talomvandlingar Ett talvärde N i ett positionssystem med bas r (även kallat radix) kan alltså uttryckas som: (Ekv. 2.1) Koefficienterna dk (k = -m, ..., n-1) representerar siffror i talsystemet. Antalet heltalssiffror är n och antaletExempel: bråktalssiffror är m. Sifferföljden tolkas som summan N där varje siffra får en potens av basen som vikt. Heltalsdel och bråktalsdel åtskiljs av en punkt (.) (Kommat används bara i det decimala BinäraÄrtalet (101.11) tillenbart bas 10 direkt decimal talsystemet). punkten utelämnad består talet av genom en heltalsdel. Siffran längst till vänster dn-1 2 omvandlas utvärdering med r=2, n=3, ger (5,75) . och siffran längst till höger d-m sägs vara den mest signifikanta siffranm=2, (Mostvilket Significant Digit, 10 MSD) den minst signifikanta siffran (Least Significant Digit , LSD). Om talsystemets bas r är mindre än 10 används de r första av de arabiska symbolerna 0-9 som Exempel: siffror. Är basen större än 10 kompletteras siffrorna 0-9 med stora bokstäver ur alfabetet med början på Hexadecimala talet i(2A1.F) till första bas 10 genom direkt bokstaven A. Detta illustreras Tabell 2.1, där de trettiotvå heltalen i några olika talsystem visas. 16 omvandlas Vi kommer i denna framställning att speciellt behandla de vilket binära ger och hexadecimala talsystemen. decimal utvärdering med r=16, n=3, m=1, (673,9375)10 . bas 2 binärt 0 bas 16 bas 10 hexadecimalt decimalt 0 0 bas 8 oktalt bas 2 binärt 0 10000 bas 16 bas 10 hexadecimalt decimalt 10 16 bas 8 oktalt 20 gar i = 16 + 7 + 6/8 + 1/64 = (23+49/64)10 = (23,765625)10 (C5.8)16 = (N)10 = C × (10) 161+ 5 × (10) 160 + 8 × (10) 16-1 = (12)10×(16)101 + 5 × (16) 100 + 8/16 = 192 +5 + 8/16 = (197,5)10 Talomvandling Låt oss nu se hur vi översätter från det decimala talsystemet till ett godtyckligt talsystem. (Ekv. 2.1 ska nu gälla för talomvandlingen. Talomvandling av heltalsdelen (integer part) och bråkdelen (fractional part) kräver olika metoder och det är därför praktiskt att skriva om ekvationen som: N = NI + NF = 2.2 d × r + d × r + ... + d × r + d × r Decimalt tillEkv. binärt/oktalt/hexadecimalt: n −1 n −1 n−2 n−2 1 1 0 0 + d −1 × r −1 + ... + d − ( m +1) × r − ( m +1) + d − m × r − m Det decimala talet delas upp i en heltalsdel (integer part) och en bråktalsdel där NI betecknar heltalsdelen (integer part) och NF betecknar bråktalsdelen (fractional part). (fractional part) som sedan behandlas separat: (N)10 = (NI,NF)10 Grundläggande datorteknik för högskolans ingenjörsutbildningar Algoritm för omvandling av heltalsdelen NI Exempel 2.8 Omvandla hexadecimala talet (A8)16 till binärt tal. Låt N vara ett heltal i en godtycklig bas där de aritmetiska operationerna är definierade. Vi vill I Varje hexadecimal siffra ger direkt fyra binära siffror (Tabell 2.1) omvandla N till basen r och utför därför divisionen: I A 8 d0 1010 1000 NI Ekv. 2.3 DVS: (A8)16 = A+ r= (10101000)r 2 där A betecknar kvoten och d0 betecknar resten. Av operationen framgår att d0 < r, dvs en siffra i talsystemet med basen r. Vi fortsätter med succesiva divisioner tills kvoten är 0. Vi ska nu se hur även bråktalsdelen kan omvandlas mellan godtyckliga talsystem. A d1 =B Algoritm för+ omvandling av bråktalsdelen NF r r Låt B NF vara d en bråkdel i en godtycklig bas där de aritmetiska operationerna är definierade. Vi vill = CN+F till2 basen r och utför därför multiplikationen: omvandla r r ....r NF = d-1 + A’ d Z A’ är en där = 0 + n ny bråkdel och d-1 är ett heltal sådant att d-1 < r. r upprepade multiplikationer tills den nya bråkdelen antingen är 0 eller tills tillräckligt Vir utför nu många medärden nya basen bestämts. Detbråktalssiffror sökta uttrycket således: Ekv. B’(dn dn-1 ... d1 d0)r r A’2.4 = dN -2 I+= r B’ = d + C’ -3 dvs. talvärdet NI ges nu av siffrorna dn ... d0 i talsystemet med basen r. ... Talomvandling Decimalt till binärt/oktalt/hexadecimalt: Exempel: Decimala talet (N)10 = (211,678)10 skall omvandlas till bas 2, och avkortas till 6 stycken bråktalssiffror. Separation av heltalsdel och bråktalsdel ger: (NI)10 = (211)10 och (NF)10 = (0,678)10. Omvandling av heltalsdel: Heltalsdelen (211)10 omvandlas till bas 2 genom successiva divisioner med 2, vilket ger (NI)2 = (11010011)2. Omvandling av bråktalsdel: Bråktalsdelen (0,678)10 omvandlas till bas 2 genom successiva multiplikationer med 2, vilket ger (NF)2 = (0.101011…)2. Resultat: (N)10 = (211,678)10 motsvarar alltså (N)2 = (11010011.101011…)2. Binärkodning Begrepp vid binär kodning begrepp betydelse exempel... bit/bitar minsta informationsenhet, kan anta två värden 0 eller 1 bitsträng binärt ord sekvens av bitar 101100100001... kodord 7 6 5 4 3 2 1 0 också ett binärt ord men med en fastställd kodning (betydelse) 1000001 = “A” (ASCII) 1000001 = 65 (naturligt tal) 1000001 = -127 (heltal) ordlängd antal bitar i ordet nibble ordlängden 4 bitar 0101 byte ordlängden 8 bitar 01011100 Digital och datorteknik LV1 Binärkodning Vad döljs i detta mönster av hexadecimala siffror? Är det bild (jpg)? Är det text (ASCII)? Är det musik (mp3)? Är det maskinkod? Binärkodning Betrakta dessa bitsträngar som representerar tal? Är det positiva tal? Är det negativa tal? Är det heltal? Är det bråktal? Binärkodning Kodning: Tolkning av en sekvens av 1:or och 0:or som ett binärt tal är bara ett av flera sätt att koda en sådan sekvens. Exempel på andra sätt att koda binärt är: • • • • • • • Gray-kod (reflekterande binärkod) Excess-kod (förskjuten binärkod) NBCD-kod (binärkodade decimaltal) ASCII, UTF-8 (alfanumeriska koder) Huffman-kod (komprimerande kod) – vanliga symboler får färre bitar Paritetskod (feldetekterande kod) – fåtal redundanta bitar läggs till Hammingkod (felrättande kod) – stor andel redundanta bitar läggs till vandlingar . 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 L 2.2 NBCD- Grundläggande datorteknik för högskolans ingenjörsutbildningar Exempel 2.16 Skriv textsträngen ”Kaffe eller te?” som en sekvens av ASCII- kodord Ur Tabell 2.3 får vi: Binärkodning K=(4B)16, a=(61)16, f=(66)16, e=(65)16, ’ ’(mellanslag)=(20)16, l=(6C)16, r=(72)16, t=(74)16, ?=(3F)16 DVS: ”Kaffe eller te?” = (4B,61,66,66,65,20,65,6C,6C,65,72,20,74,65,3F)ASCII 2.4.2 Reflekterande koder (Gray-kod) Graykod: Reflekterande koder karakteriseras av att dom har enhetsavstånd, vilket i klartext betyder att två För reflekterande koder gäller tvåEnintilliggande endast intilligande kodord endast skiljer sig åt i enatt position. vanlig tillämpning ärkodord hos så kallade kodskivor skiljer vridbara axlar (figur 2.1). sig åt i påen bitposition. Denna egenskap är viktig i vissa tillämpningar, Exempelvis kan rattutslag på en styrstång mätas genom att en kodskiva fästs vid axeln. Då axeln t ex förroterar att reducera fel i avläsning avdåkodskivor på roterande axlar. kommer också kodskivan att att rotera och lämna olika siffermönster baserat på axelns vridningsvinkel. Ljuskällor Detektorer KODEN speciella numeriska presentera ne 7-bitars FIGUR 2.1 KODSKIVA PÅ VRIDBAR AXEL Detektorer avläser den roterande skivans position genom att vissa fält är transparenta medan andra fält inte släpper igenom ljus från ljuskällorna. Baserat på detta bildas ett kodord där "ljus" står för en Ställ nu upp den omvända följden av den 2-bitars Graykoden, dvs. 10 11 01 00 Komplettera alla dess kodord med 1 i den mest signifikanta positionen, vilket ger följden: 110 111 101 100 Då vi sätter samman följderna får vi den 3-bitars Graykoden: 000 001 011 010 110 111 101 100 Binärkodning Se även Tabell 2.4, som visar upp till fyra bitars Graykod. Graykod: Här framgår styrkan hos Graykoden: oavsett var kodskivan läses av kan felet i avläsningen inte överstiga 1 position. Jämför detta med vanlig binärkod: om skivan skulle läsas av mellan 0111 och 1000 (och därmed kunna tolkas som 1111) skulle felet bli hela 8 positioner. Decimal ordning 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 binärkod 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 2-bitars Graykod 00 01 11 10 3-bitars Graykod 000 001 011 010 110 111 101 100 4-bitars Graykod 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000 TABELL 2.4 GRAYKOD Vi stöter på Graykod igen inom tal kort, samband minimering grindnät. Graykod för ett N-bitars kan iomvandlas frånmed binärkod med följandeav algoritm: Graykodens bit gN-1 är samma som binärkodens bit bN-1. för varje n, mindre än N, men större än eller lika med 0, i sjunkande ordning, Binärkodning Excess-N kod: I en excess-N-kod får man tolkningen genom att subtrahera N från binärkodens talvärde. På så sätt kan man justera tallinjen för att bäst Exempel på excess 8-kod (excess 2n-1-kod, med n = 4) passa tillämpningen, t ex för att representera negativa värden. Analog/Digital-omvandlare, ADC w Givare (Sensor) Digital z y Spänning t ex [-8V,+8V] x Analog Färdig Start Koden decimalt: 0 1 2 3 Koden binärt: 0000 0001 0010 0011 4 0100 5 6 7 0101 0110 0111 Spänningsvärde: -8V -4V -3V U = xyzw2 (Binärt kodat värde för spänningen.) 8 9 10 11 1000 1001 1010 1011 12 13 14 1100 1101 1110 15 1111 U -7V -6V -5V -2V -1V 0V +1V +2V +3V +4V +5V +6V Man får här spänningen i volt genom att subtrahera 8 från kodordets värde (excess 8). Lägg märke till att spänningsvärdet +8 V inte får något kodord för denna kod. +7V +8V Binärkodning Tabell 2.4 på binärkoder. Tabell 2.4 Exempel på decimala binärkoder. Tabell 2.4Exempel Exempel pådecimala decimala binärkoder. NBCD-kod: NBCD Decimal Decimal NBCD Excess-3 2421Decimal NBCD Excess-3 Excess-3 siffra kod siffra kod kod siffra kod Z Z 3 33 2 22 1 11 0 00 3 3232121010 0 3 2 Z1 0 Istället för att omvandla ett 0 decimalt tal till det binära talsystemet kan man binärt 1 koda varje decimal siffra som 2 3 ingår i talet. I NBCD-kod (Natural Binary 4 Coded Decimal) representeras5 6 varje decimal siffra naturligt nog med sitt ekvivalenta tal i det 7 8 binära talsystemet. 9 Exempel: (23) 10 = (0010 0011)NBCD 2421Excess-3 Graykod 2421- Excess-3 Excess-3Graykod Graykod kod kod 3 32 21 1030 2 1 0 3 32 21 10 0 00 0000 0000 0011 0000 0011 0000 0011 0000 00000010 0010 0010 11 0001 0001 0100 0001 0100 0001 0100 0001 00010110 0110 0110 22 0010 0010 0101 0010 0101 0010 0101 0010 00100111 0111 0111 33 0011 0011 0110 0011 0110 0011 0110 0011 00110101 0101 0101 44 0100 0100 0111 0100 0111 0100 0111 0100 01000100 0100 0100 55 0101 0101 1000 0101 1000 1011 1000 1011 10111100 1100 1100 66 0110 0110 1001 0110 1001 1100 1001 1100 11001101 1101 1101 77 0111 0111 1010 0111 1010 1101 1010 1101 11011111 1111 1111 88 1000 1000 1011 1000 1011 1110 1011 1110 11101110 1110 1110 99 1001 1001 1100 1001 1100 1111 1100 1111 11111010 1010 1010 Genom att använda excess-N- och Gray-koder kan man dessutom erhålla koder med symmetri. TABELL 2.2 NBCDKODEN Exempel 2.15 Det decimala talet 9756 representeras i NBCD-kod som… (9756)10 = (1001 ( 9 2.4.1 0111 7 Alfanumerisk kod 0101 5 0110)2 6)NBCD Binärkodning När de symboler som skall kodas inte enbart är siffror utan även bokstäver (A,B,C,...), speciella operationssymboler (+,-,/,?,(,...) m.m. krävs en expanderad kod. Sådana koder benämns alfanumeriska koder och bildas ofta ur numeriska koder genom att antalet bitar i kodorden utökas. För att representera tio decimala siffror, 29 stora och små bokstäver och diverse specialtecken krävs åtminstone 7-bitars När det som skall kodas inte enbart är siffror, utan även bokstäver kodord. Fram till 2007 var den i särklass mest använda alfanumeriska koden ASCII-koden (American och speciella krävs enseexpanderad ASCII (7 bitar) och Standard Code forsymboler, Information Interchange), Tabell 2.3 nedan.kod. Efter detta används huvudsakligen den betydligt mer flexibla UTF-8 (Universal Characterkoder. Set Transformation Format—8-bit). Speciellt är UTF-8 (8 bitar) är två vanliga sådana de 127 första tecknen i UTF-8 identiska med ASCII-koden. ASCII-kod: Hex 0 1 2 3 4 5 6 7 8 9 A B C D E F ASCII NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO S1 Hex ASCII Hex ASCII Hex ASCII Hex ASCII Hex 20 10 DLE 30 0 40 @ 50 21 ! 11 DC1 31 1 41 A 51 22 " 12 DC2 32 2 42 B 52 23 # 13 DC3 33 3 43 C 53 24 $ 14 DC4 34 4 44 D 54 25 % 15 NAK 35 5 45 E 55 26 & 16 SYN 36 6 46 F 56 27 ' 17 ETB 37 7 47 G 57 28 ( 18 CAN 38 8 48 H 58 29 ) 19 EM 39 9 49 I 59 2A * 1A SUB 3A : 4A J 5A 2B + 1B ESC 3B ; 4B K 5B 2C , 1C FS 3C < 4C L 5C 2D 1D GS 3D = 4D M 5D 2E . 1E RS 3E > 4E N 5E 2F / 1F US 3F ? 4F O 5F TABELL 2.3 ASCII-KOD ASCII P Q R S T U V W X Y Z [ \ ] ^ _ Hex 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F ASCII ` a b c d e f g h i j k l m n o Hex 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F ASCII p q r s t u v w x y z { | } ~ DEL 21
© Copyright 2024