Var används det binära decimalsystemet? Representation av tal i binär kod. Konvertera tal: från binärt till decimalt

Binärt decimaltalssystem. Decimalsiffrorna 0 till 9 ersätts av binära tetrader som representerar dem: 0=0000, 1=0001, 2=0010, 3=0011, 4=0100, 5=0101, 6=0110, 7=0111, 8=1000 och 9= 1001. Denna notation används mycket ofta som ett mellansteg för att konvertera ett tal från decimalsystemet till binärt eller vice versa. Eftersom 10 inte är en exakt potens av 2 används inte alla 16 tetrader, och algoritmerna för aritmetiska operationer på flersiffriga tal är mer komplexa än i de grundläggande talsystemen. Och ändå används det binära decimaltalssystemet även på denna nivå i många mikroräknare och vissa datorer (i synnerhet Yamaha MSX).

Eftersom representation och aritmetik i decimaltalssystemet är mest bekanta för människor, och binär representation och binär aritmetik är mest bekanta för datorer, introducerades ett kompromisssystem med binär-decimal notation av tal. Detta system används oftast där det finns ett behov av att ofta använda decimalinmatnings-/utmatningsproceduren. (elektroniska klockor, miniräknare, nummer som ringer, etc.). I sådana enheter är det inte alltid tillrådligt att tillhandahålla universell mikrokod för att konvertera binära tal till decimaltal och vice versa på grund av den lilla mängden programminne.

Principen för detta system är ganska enkel: varje decimalsiffra konverteras direkt till dess 4-bitars decimalekvivalent, till exempel: 369110=0011 0110 1001 0001DEC:

Decimal 3 6 9 1 BCD 0011 0110 1001 0001

Låt oss konvertera det binära decimaltalet 1000 0000 0111 0010 till dess decimalmotsvarighet. Varje grupp om 4 bitar omvandlas till dess decimalekvivalent. Vi får 1000 0000 0111 0010DEC = 807210:

BCD 1000 0000 0111 0010 Decimal 8 0 7 2

Mikroprocessorer använder rena binära tal, men förstår också BCD-omvandlingskommandon. De resulterande binära decimaltalen representeras lätt i decimalnotation, vilket är mer förståeligt för människor.

Konvertera binära tal till BCD

Den aritmetisk-logiska enheten för AVR-mikrokontroller (liksom andra mikroprocessorer) utför elementära aritmetiska och logiska operationer på tal representerade i binär kod. ADC-konverteringsresultaten läses i binär kod; det är bekvämt att bearbeta mätresultat i binär kod (i formatet heltal eller flyttal). Men när det slutliga resultatet visas på indikatorn måste det konverteras till ett decimalformat som är läsbart för människor.

Det här avsnittet diskuterar program för att konvertera binära tal till BCD.

1. Format för att representera decimaltal

Det finns för närvarande två vanliga format för att representera decimaltal i mikroprocessorer - packad binärkodad decimal (BCD-Binary-Coded Decimal) och opackad decimalkod.

En packad BCD-kod är en representation av ett decimaltal där varje decimalsiffra representeras av en 4-bitars binär positionskod 8-4-2-1. I det här fallet innehåller byten två decimalsiffror. Den minst signifikanta decimalsiffran upptar den högra tetraden (bitar 3:0), den mest signifikanta decimalsiffran upptar den vänstra tetraden (bitar 7:4). Flerbitars BCD-nummer upptar flera sammanhängande byte. Om numret är signerat tilldelas den mest signifikanta tetraden av den mest signifikanta byten för att representera tecknet i BCD-format. Sex binära kodmönster kan användas för att koda ett tecken, som inte används för att representera decimalsiffror. Dessa är koder 1010-1111 (A-F i hexadecimal). Typiskt används kod 1100 (C) för att koda plustecknet och 1101 (D) för minustecknet.

Opackad decimalkod är en delmängd av den internationella ASCII-teckenkodningstabellen (tabell 1). Det kan ses att lagring av uppackade decimaltal kräver dubbelt så mycket minne, eftersom varje siffra representeras av en 8-bitars kod. Tabell 1: ASCII-koder för decimalsiffror

2. Konvertera 16-bitars heltal till BCD-tal

www.atmel.com erbjuder ett program "bin2bcd16" för att konvertera 16-bitars binära heltal till packade BCD-nummer. Den här artikeln diskuterar programmet "bin16bcd5" (se Appendix, Program 1), skrivet av A.V. Tereshkin enligt algoritmen som beskrivs i, och som utför samma uppgift. Det senare programmet visade sig vara mer effektivt än det första när det gäller hastighet, kodlängd och antal använda register.

Algoritmen för "bin16bcd5"-programmet är som följer. Anta att vi har ett osignerat 16-bitars heltal (intervall 0 till 65535). Självklart måste du hitta 5 decimalsiffror. Metoden för omvandling är att subtrahera 10 000 från det ursprungliga talet och först fastställa decimalsiffran på tiotusentals. Sedan hittas tusentalstalet genom att successivt subtrahera talet 1000 etc. Subtraktionen utförs varje gång tills en negativ skillnad erhålls genom att räkna antalet subtraktioner. När du går till bestämning av varje nästa decimal i registren för det ursprungliga numret, återställs den sista positiva skillnaden. Efter att tiotals decimalsiffran har hittats, kommer enhetens decimalsiffra att finnas kvar i de ursprungliga nummerregistren.

Programmet "bin16ASCII5" (se Appendix, Program 2) konverterar ett 16-bitars binärt heltal till ett uppackat decimaltal. Samma algoritm används.

3. Konvertera binär bråkdel till BCD

En binär bråkdel, per definition, representeras av följande uttryck:

0.A-1A-2 ... A-m = A-1*2-1 + A-2*2-2 + ... A-m*2-m

Från denna representation följer transformationsalgoritmen (fig. 2), som innehåller m steg. Vid varje steg läggs nästa binära siffra till det binära decimalresultatet och hela resultatet divideras med 2.

Visat är ett binärt register som innehåller den ursprungliga binära fraktionen och ett BCD-packat resultatregister. För tydlighetens skull visar båda registren också siffran för enheter och punktens position, som inte representeras på något sätt i mikroprocessorminnet, men vars position alltid är strikt specificerad. Antalet cykler för algoritmen i fråga är lika med antalet bitar av den binära fraktionen. Bitstorleken för det binära decimalregistret bestäms av den erforderliga beräkningsnoggrannheten.

Att lägga till denna siffra till ett BCD-nummer innebär att den måste placeras i enhetssiffran i BCD-numret, varifrån, vid efterföljande division med två, siffran A-i kommer att flyttas till den mest signifikanta siffran i den mest signifikanta tetraden av decimalbråket . Vid programmering kan vi tänka på decimalenheternas plats som C-bärbiten.

När man dividerar ett packat binärt tal med två, precis som när man dividerar ett binärt tal, förskjuts det åt höger med en plats. I det här fallet delas varje tetrad, det vill säga varje decimalsiffra, med två. Vid division av en jämn decimalsiffra på motsvarande plats erhålls decimalsiffran igen och ingen korrigering krävs. När man dividerar med 2 en udda decimalsiffra, måste resten av 5 läggas till den nedre decimalen, men i själva verket adderar det binära skiftet talet 8 (vikten av den mest signifikanta tetradsiffran) till den lägre tetradsiffran. Därför krävs en korrigering av resultatet, vilket består i att subtrahera siffran 3 från innehållet i de anteckningsböcker som, efter att ha flyttats till höger, har de mest signifikanta siffrorna inställda.

4. Konvertera flyttalstal till BCD-tal

Representationen av flyttalsnummer är som följer:

där M är talets binära mantiss, P är talets binära ordning.

Denna representation används ofta i decimaltalssystemet för att representera mycket stora eller mycket små tal. Mantissan och exponenten är heltal med tecken. Mantissa-tecknet är tecknet för hela talet. Ordningen visar punktens sanna position istället för den som den upptar i mantissbilden. Ett binärt flyttal skiljer sig från det decimaltal vi är vana vid genom att punkten är binär, det vill säga ordningen anger antalet binära (snarare än decimala) siffror med vilka denna punkt måste flyttas åt vänster eller höger.

En normaliserad representation av ett flyttal är en representation där mantissan är en egen bråkdel och dess inledande siffra skiljer sig från noll. Men för ett binärt tal innebär kravet att den inledande siffran är skild från noll att denna siffra är lika med 1. Om den inledande siffran är exakt känd behöver den inte lagras i minnet.

Konceptet med ett blandat talsystem

Bland talsystem finns en klass av sk blandade talsystem.

Definition 1

Blandad det heter detta notation, där tal som anges i ett visst talsystem med basen $P$ representeras med siffror i ett annat talsystem med basen $Q$, där $Q

Dessutom, i ett sådant talsystem, för att undvika avvikelser i representationen av varje siffra i systemet med basen $P$, tilldelas samma antal siffror i systemet med basen $Q$, tillräckligt för att representera alla siffran i systemet med basen $P$.

Ett exempel på ett blandat talsystem är det binära-decimala systemet.

Praktisk motivering för att använda det binära decimaltalssystemet

Eftersom en person i stor utsträckning använder decimaltalssystemet i sin praktik, och en dator vanligtvis arbetar med binära tal och binär aritmetik, introducerades ett kompromissalternativ i praktiken - binära decimala notationssystem, som vanligtvis används där det finns ett behov av att ofta använda decimalinmatnings-/utmatningsproceduren (till exempel elektroniska klockor, miniräknare, etc.). I sådana enheter är det inte alltid tillrådligt att använda universell mikrokod för att konvertera binära tal till decimaltal och vice versa på grund av den lilla mängden programminne.

Anteckning 1

I vissa typer av datorer innehåller aritmetiska logiska enheter (ALU) speciella decimala aritmetiska enheter som utför operationer på tal representerade i binär decimalkod. Detta gör det i vissa fall möjligt att avsevärt öka datorns prestanda.

Till exempel använder ett automatiserat databehandlingssystem ett stort antal siffror men utför inte många beräkningar. I ett sådant fall skulle operationerna att överföra nummer från ett system till ett annat avsevärt överskrida den tid som krävs för att utföraer. Mikroprocessorer, å andra sidan, använder rena binära tal, men de förstår också kommandon för att konvertera till binär decimalnotation. ALU för AVR-mikrokontrollern (liksom andra mikroprocessorer) utför elementära aritmetiska och logiska operationer på tal representerade i binär kod, nämligen:

    läser resultaten av ADC-konvertering;

    i heltals- eller flyttalsformat, bearbetar mätresultat.

Det slutliga resultatet visas dock på indikatorn i ett decimalformat som är bekvämt för människans uppfattning.

Principer för att konstruera ett binärt-decimalt talsystem

När man konstruerar ett binärt-decimalt talsystem tilldelas binära siffror $4$ för att representera varje decimalsiffra, eftersom den maximala decimalsiffran $9$ är kodad som $10012$.

Till exempel: $925_(10) = 1001 0010 0101_(2-10)$.

Bild 1.

I denna notation representerar successiva fyrdubblar av binära siffror siffrorna $9$, $2$ respektive $5$ av decimalnotation.

För att skriva ett tal i det binära-decimala talsystemet måste det först representeras i decimalsystemet, och sedan måste varje decimalsiffra som ingår i talet representeras i det binära systemet. Samtidigt krävs olika antal binära siffror för att skriva olika decimalsiffror i det binära talsystemet. För att undvika användningen av avgränsare, när du representerar en decimalsiffra i binärt, skrivs alltid 4 binära siffror. Gruppen av dessa fyra siffror kallas anteckningsbok.

Även om BCD-notation endast använder siffrorna $0$ och $1$, skiljer den sig från den binära representationen av ett givet tal eftersom decimalekvivalenten till ett binärt tal är flera gånger större än decimalmotsvarigheten till ett BCD-tal.

Till exempel:

$1001 0010 0101_{(2)} = 2341_{(10)}$,

$1001 0010 0101_{(2)} = 925_{(2-10)}$.

Denna notation används ganska ofta som ett mellansteg när man konverterar ett tal från decimalsystemet till binärt och vice versa. Eftersom talet $10$ inte är en exakt potens av talet $2$ används inte alla $16$ tetrads (tetrader som representerar tal från $A$ till $F$ kasseras, eftersom dessa tal anses vara förbjudna), men algoritmer för aritmetik operationer på flersiffriga tal i detta fall, mer komplexa än i grundläggande talsystem. Och ändå används det binära decimaltalssystemet även på denna nivå i många mikroräknare och vissa datorer.

För att korrigera resultaten av aritmetiska operationer på tal representerade i binär decimalkod använder mikroprocessorteknik kommandon som omvandlar resultatet av operationer till det binära decimaltalssystemet. Följande regel används: när ett tal större än $9$ erhålls som ett resultat av en operation (addition eller subtraktion) i en tetrad, läggs talet $6$ till denna tetrad.

Till exempel: $75+18=$93.

$10001101\(8D)$

Den förbjudna siffran $D$ dök upp i den låga anteckningsboken. Lägg till $6$ till den låga tetraden och få:

$10010011 \ (93)$

Som du kan se, trots att tillägget utfördes i det binära talsystemet, erhölls resultatet av operationen i det binära-decimala talsystemet.

Anteckning 2

Bitvis balansering utförs ofta utifrån binärt decimaltalssystem. Användningen av binära och binära decimala talsystem är mest lämplig, eftersom antalet balanseringscykler i detta fall är det minsta bland andra talsystem. Observera att användningen av binär kod tillåter oss att minska bearbetningstiden för kompensationsspänningen med cirka $20\%$ jämfört med binär decimalkod.

Fördelar med att använda det binära decimaltalssystemet

Att konvertera tal från decimalsystemet till binärt-decimaltalssystemet innebär inga beräkningar och är lätt att implementera med enkla elektroniska kretsar, eftersom ett litet antal (4) binära siffror konverteras. Den omvända konverteringen sker automatiskt i datorn med hjälp av ett speciellt översättningsprogram.

Användningen av binärt-decimaltalssystemet i kombination med ett av huvudtalsystemen (binärt) gör det möjligt att utveckla och skapa högpresterande datorer, eftersom användningen av ett decimalt aritmetiskt block i ALU eliminerar behovet av programmerad konvertering av tal från ett talsystem till ett annat när man löser problem.

Eftersom två binära decimalsiffror utgör $1$-byte, som kan användas för att representera värdena på tal från $0$ till $99$, och inte från $0$ till $255$, som med ett binärt tal på $8$-bitar, då använda $1$ byte för Genom att konvertera varannan decimalsiffra kan du bilda BCD-tal med valfritt antal decimaler.

Ett exempel på ett blandat talsystem är binärt decimalsystem . I BCD-nummersystemet tilldelas 4 binära siffror för varje decimalsiffra, eftersom den maximala decimalsiffran 9 är kodad som 1001 2. Till exempel,

925 10 = 1001 0010 0101 2-10 .

Här representerar successiva fyrdubblar (tetrader) av binära siffror siffrorna 9, 2 och 5 i decimalnotationen.

Även om BCD-notation endast använder siffrorna 0 och 1, skiljer sig BCD-notation från den binära representationen av ett givet tal. Till exempel motsvarar den binära koden 1001 0010 0101 decimaltalet 2341, inte 925.

Om P=Q l (l är ett positivt heltal), sammanfaller representationen av vilket tal som helst i ett blandat talsystem identiskt med bilden av detta tal i ett talsystem med basen Q. Exempel på ett sådant blandat talsystem är binär- oktal och binär-hexadecimal.

Till exempel,

A2 16 = 1010 0010 2 = 1010 0010 2-16

REPRESENTATION AV NEGATIVA TAL I FAST PUNKTFORMAT (PUNKT)

För att förenkla aritmetiska operationer använder datorer speciella binära koder för att representera negativa tal: reciproka och komplement. Med hjälp av dessa koder är det förenklat att bestämma tecknet på resultatet av en operation under algebraisk addition. Funktionen för subtraktion (eller algebraisk addition) reduceras till den aritmetiska additionen av operanderna, vilket gör det lättare att utveckla tecken på översvämning av bitrutnätet. Som ett resultat förenklas datorenheter som utför aritmetiska operationer.

Det är känt att ett av sätten att utföra en subtraktionsoperation är att ersätta tecknet för subtrahenden med dess motsatta och lägga till det till minuend:

A - B = A + (- B)

Detta ersätter operationen av aritmetisk subtraktion med operationen av algebraisk addition, som kan utföras med binära adderare.

För maskinell representation av negativa tal används koder direkt, tillägg, omvänd. En förenklad definition av dessa koder kan ges enligt följande. Om talet A i vanlig binär kod är direkt binär kod, avbildad som

[A] pr = 0.an an-1 an-2.....a1 a0,

då representeras talet -A i samma kod som

[-A]pr = 1.an an-1 an-2.....a1 a0,

och i omvänd(omvänd) kod kommer detta nummer att se ut:

[-A]varv = 1.an an-1 an-2.....a1 a0,

ai = 1 om ai = 0,

ai = 0, om ai = 1,

a jag gillar det i-den siffran i ett binärt tal. Följaktligen, när man går från en direktkod till en omvänd kod, inverteras alla siffror i Matisse-nummerbitarna.

Sedan siffran -A in ytterligare koden representeras som

[-A]add = [-A]varv + 1

För att erhålla komplementkoden för negativa tal måste du alltså först invertera den digitala delen av det ursprungliga numret, vilket resulterar i dess omvända kod, och sedan lägga till en till den minst signifikanta siffran i den digitala delen av numret.

Den kompletterande koden för ett visst nummer erhålls genom att ersätta den med ett nytt nummer, komplementär det till ett tal lika med vikten av siffran efter den mest signifikanta siffran i bitrutnätet som används för att representera talets mantiss i fixpunktsformat. Därför kallas en sådan nummerkod extra.

Låt oss föreställa oss att vi bara har två siffror för att representera siffror i decimaltalsystemet. Då blir det maximala antalet som kan avbildas 99, och vikten av den tredje obefintliga högsta siffran blir 10 2, d.v.s. 100. I det här fallet, för talet 20, kommer det komplementära talet att vara 80, vilket kompletterar 20 till 100 (100 - 20 = 80). Därför, per definition, subtraktion

kan ersättas med tillägg:

Här går den högsta enheten bortom det allokerade bitnätet, i vilket endast siffran 30 återstår, d.v.s. Resultatet av att subtrahera talet 20 från 50.

Låt oss nu titta på ett liknande exempel för tal representerade i 4-bitars binär kod. Låt oss hitta tilläggstalet för 0010 2 = 210. Vi måste subtrahera 0010 från 0000, vi får 1110, vilket är tilläggskoden 2. Siffran som visas inom hakparenteser finns faktiskt inte. Men eftersom vi har ett 4-bitars rutnät är det i princip omöjligt att utföra en sådan subtraktion, och ännu mer så försöker vi bli av med subtraktion. Därför erhålls tilläggsnummerkoden på det sätt som beskrivits tidigare, dvs. först får de den omvända koden till numret och lägger sedan till 1. Efter att ha gjort allt detta med vårt nummer (2) är det inte svårt att se att ett liknande svar kommer att erhållas.

Låt oss betona det Tvås komplement och tvås komplementkoder används endast för att representera negativa binära tal i fixpunktsform. Positiva tal i dessa koder ändrar inte deras bild och representeras som i direktkoden.

Således, de digitala siffrorna i ett negativt tal in direkt kod förbli oförändrad, och en skrivs i teckendelen.

Låt oss titta på enkla exempel.

Sju i direktkod representeras enligt följande:

pr = 0,0001112

Nummer -7 i direktkod:

[-7]pr = 1,0001112,

och i den omvända koden kommer det att se ut

[-7]varv = 1,1110002,

de där. ettor ersätts med nollor och nollor med ettor. Samma nummer i tvås komplement skulle vara:

[-7]lägg till = 1,1110012.

Låt oss återigen överväga hur subtraktionsproceduren, med hjälp av representationen av subtrahenden i tvås komplementkod, reduceras till additionsproceduren. Subtrahera talet 7 från 10: 10 - 7 = 3. Om båda operanderna presenteras i direktkod, utförs subtraktionsproceduren enligt följande:

-1.000111

Och om subtrahendable, dvs. -7, presenterad i tvås komplementkod, så reduceras subtraktionsproceduren till additionsproceduren:

+ 1.111001

1 0.000011 = 310.

Nuförtiden använder datorer vanligtvis tvås komplementkod för att representera negativa tal i fixpunktsformat.

Formen för representation av nummer i digitala maskiner är en uppsättning regler som gör det möjligt att upprätta en ömsesidig överensstämmelse mellan registreringen av ett nummer och dess kvantitativa motsvarighet.

Maskinell (automatisk) bild av ett nummer det är representation av ett tal i bitrutnätet i en digital maskin. Symbolen för en maskinbild av ett nummer, till exempel A, kommer att representeras som [A].

På grund av den begränsade längden på maskinord är uppsättningen siffror som kan representeras i en maskin ändlig. Jämförelser mellan olika former av talrepresentation i datorer görs vanligtvis utifrån en uppskattning räckvidd och noggrannhet i nummerrepresentationen.

I dagligt bruk är den vanligaste formen att representera tal som en sekvens av siffror som separeras med ett kommatecken i heltals- och bråkdelar. Siffror som representeras i denna form kallas siffror med naturligt kommatecken eller siffror i naturlig form. I naturlig form skrivs ett tal i sin naturliga form, till exempel är 12560 ett heltal, 0,003572 är ett egenbråk, 4,89760 är ett oegentligt bråk.

När du representerar siffror i denna form är det nödvändigt för varje nummer att indikera positionen för dess kommatecken i bitrutnätet som tilldelats för att representera numret i maskinen, vilket kräver extra hårdvarukostnader på ett ganska stort belopp. Därför har två andra former av representation blivit utbredda i datorer: med fast och flytande punkt (prick).

Det finns inget behov av att ange kommatets position om platsen för kommatecknet i maskinens bitruta är fast i förväg en gång för alla. Denna form av att representera tal kallas representation med fast kommatecken (punkt).

Eftersom siffror kan vara positiva och negativa delas formatet (bitrutnätet) på maskinbilden in i ikonisk del Och nummerfält. Nummerfältet innehåller bilden av själva numret, som vi vanligtvis kallar mantissa tal. För att koda tecknet för ett tal används den mest signifikanta siffran i bitrutnätet som är reserverat för bilden av det binära talet, och de återstående siffrorna allokeras för talets mantiss. Positionen för kommatecken i bitrutnätet är strikt fixerad, vanligtvis antingen till höger om den lägsta siffran i mantissan eller till vänster om den högsta. I det första fallet representeras talet som ett heltal, i det andra - som ett egentligt bråktal. Nuförtiden representerar de allra flesta datorer heltal i fixpunktsformat.

Teckendelen innehåller information om numrets tecken. Det är accepterat att tecknet Positivt nummer "+" representeras av symbolen 0, och tecknet är ett negativt tal "-" representeras av symbolen 1.

Till exempel, i binär kod, med hjälp av ett 6-bitars rutnät, kan siffran 7 i fixpunktsform representeras som:

där siffran till vänster om punkten är tecknet för talet, och de fem siffrorna till höger om punkten är mantissan för numret i direktkod. Vad som menas här är det kommatecken är fixerat till höger om den minst signifikanta siffran, och punkten i bilden av numret i detta fall skiljer helt enkelt teckenbiten från numrets mantiss.

I framtiden kommer denna typ av representation av ett tal i maskinform ofta att användas i exempel. Du kan använda en annan form för att representera ett tal i maskinform:

där teckenbiten separeras med hakparenteser.

Antalet siffror i bitrutnätet som allokerats för att representera mantissan för ett tal bestämmer intervallet och noggrannheten för representationen av ett nummer med fast punkt. Det maximala binära talet i absolut värde representeras av ettor i alla siffror, exklusive tecknet ett, dvs. för heltal

|A|max = (2 (n -1) - 1),

Var n- den totala längden på bitnätet. I fallet med 16-bitars rutnät

|A| max = (2 (16-1) - 1) = 32767 10,

de där. Intervallet för heltalsrepresentation i detta fall kommer att vara från +3276710 till -3276710.

För fallet när kommatecknet är fixerat till höger om den låga siffran i mantissan, dvs. för heltal, tal vars modul är större än

(2(n-1) - 1) och mindre än en representeras inte i fixpunktsform. Tal vars absoluta värde är mindre än en av de minst signifikanta siffrorna i bitrutnätet kallas i detta fall en maskinnoll. Negativ nolla är förbjuden.

I vissa fall, när det är möjligt att endast arbeta med talmoduler, allokeras hela bitrutnätet, inklusive den mest signifikanta biten, för att representera numret, vilket gör det möjligt att utöka intervallet för representation av tal.

Binärt decimaltalssystem

Det binära decimaltalssystemet har blivit utbrett i moderna datorer på grund av att det är lätt att konvertera till decimalsystemet och vice versa. Den används där huvuduppmärksamheten inte ägnas åt enkelheten i den tekniska konstruktionen av maskinen, utan till användarens bekvämlighet. I detta talsystem kodas alla decimalsiffror separat med fyra binära siffror och skrivs i denna form sekventiellt efter varandra.

Det binära decimalsystemet är inte ekonomiskt med tanke på att implementera den tekniska konstruktionen av maskinen (den erforderliga utrustningen ökar med cirka 20%), men det är mycket bekvämt när du förbereder uppgifter och programmerar. I det binära decimaltalssystemet är talsystemets bas talet 10, men varje decimalsiffra (0, 1, ..., 9) representeras, det vill säga kodad, av binära siffror. Fyra binära siffror används för att representera en decimalsiffra. Här finns det naturligtvis redundans, eftersom 4 binära siffror (eller en binär tetrad) inte kan representera 10 utan 16 tal, men detta är redan en produktionskostnad för programmeringsbekvämlighetens skull. Det finns ett antal binärkodade decimalsystem för att representera tal, kännetecknade av att vissa kombinationer av nollor och ettor inom en tetrad tilldelas vissa värden av decimalsiffror.
Upplagt på ref.rf
I det vanligaste naturliga binärkodade decimaltalssystemet är vikten av binära siffror inom en tetrad naturliga, det vill säga 8, 4, 2, 1 (tabell 6).

Tabell 6

Binär decimalnotation

Till exempel är decimaltalet 5673 i BCD-notation 01010110011100011.

Att konvertera tal från ett talsystem till ett annat är en viktig del av maskinaritmetiken. Låt oss överväga de grundläggande reglerna för översättning.

1. För att konvertera ett binärt tal till ett decimaltal är det nödvändigt att skriva ᴇᴦο som ett polynom bestående av produkterna av siffrorna i talet och motsvarande potens av 2, och beräkna enligt reglerna för decimalaritmetik˸

När du översätter är det bekvämt att använda tabellen över potenser av två˸

Tabell 7.

Krafter av nummer 2

n (grad)

Exempel. Konvertera talet till decimaltalssystemet.

2. För att konvertera ett oktalt tal till ett decimaltal är det nödvändigt att skriva ᴇᴦο som ett polynom som består av produkterna av siffrorna i talet och motsvarande potens av talet 8, och beräkna enligt reglerna för decimalaritmetik˸

När du översätter är det bekvämt att använda tabellen över potenser av åtta˸

Tabell 8.

Nummer 8 potenser

n (grad)
8 n

Binärt decimaltalssystem - koncept och typer. Klassificering och funktioner i kategorin "Binärt-decimaltalssystem" 2015, 2017-2018.

Detta system har en bas på S = 10, men varje siffra representeras av ett fyrbitars binärt tal som kallas en tetrad. Vanligtvis används detta nummersystem i datorer vid inmatning och utmatning av information. Men i vissa typer av datorer innehåller ALU speciella decimala aritmetiska block som utför operationer på tal i binär decimalkod. Detta gör det i vissa fall möjligt att avsevärt öka datorns prestanda.

Till exempel, i ett automatiserat databehandlingssystem finns det många siffror, men få beräkningar. I detta fall skulle operationer associerade med överföring av nummer från ett system till ett annat avsevärt överskrida den tid som krävs för att utföraer.

Att konvertera tal från decimalsystemet till BCD är mycket enkelt och består av att ersätta varje siffra med en binär tetrad.

Exempel.

Skriv decimaltalet 572,38 (10) i det binära decimaltalssystemet.

Den omvända översättningen är också enkel: du måste dela upp det binära decimaltalet i tetrader från punkten till vänster (för heltalsdelen) och till höger (för bråkdelen), lägga till det nödvändiga antalet obetydliga nollor och skriv sedan varje tetrad som en decimalsiffra.

Exempel.

Skriv det binära decimaltalet 10010.010101 (2-10) i decimaltalssystemet.

Omvandling av tal från BCD till binärt system utförs enligt de allmänna reglerna som beskrivs ovan.

2.3. Oktalt talsystem

I det oktala talsystemet används endast åtta siffror, d.v.s. detta talsystem har en bas S = 8. I allmänhet ser ett oktalt tal ut så här:

Var
.

Det oktala talsystemet behövs inte av en dator, till skillnad från det binära systemet. Det är bekvämt som en kompakt form för att skriva siffror och används av programmerare (till exempel i programtexter för ett mer kortfattat och bekvämt sätt att skriva binära koder för kommandon, adresser och operander). I det oktala talsystemet är vikten av varje siffra en multipel av åtta eller en åttondel, så ett åttabitars binärt tal låter dig uttrycka decimalvärden i intervallet 0-255, och ett oktalt tal täcker intervallet 0 -99999999 (för binärt är detta 27 siffror).

Eftersom 8=2 3 kan varje oktalt tecken representeras som ett trebitars binärt tal. För att konvertera ett tal från det binära talsystemet till det oktala talsystemet måste du dela detta tal till vänster (för heltalsdelen) och till höger (för bråkdelen) om punkten (komma) i grupper om tre siffror (triader) och representerar varje grupp med ett nummer i det oktala talsystemet. De extrema ofullständiga triaderna kompletteras med det erforderliga antalet obetydliga nollor.

Exempel.

Skriv det binära talet 10101011111101 (2) i det oktala talsystemet.

Exempel.

Skriv det binära talet 1011.0101 (2) i det oktala talsystemet.

Omvandling från oktalt till binärt utförs genom att representera varje siffra i ett oktalt tal som ett tresiffrigt binärt tal (triad).

2.4. Hexadecimalt talsystem

Detta talsystem har basen S = 16. I allmänhet ser ett hexadecimalt tal ut så här:

Var
.

Det hexadecimala talsystemet gör det möjligt att skriva flerbitars binära tal ännu kortare och dessutom förkorta notationen av ett 4-bitars binärt tal, d.v.s. knapra, eftersom 16=2 4 . Det hexadecimala systemet används också i programtexter för en mer kortfattad och bekväm registrering av binära tal.

För att konvertera ett tal från det binära talsystemet till hexadecimalt måste du dela detta tal till vänster och höger om punkten i tetrader och representera varje tetrad med en siffra i det hexadecimala talsystemet.

Exempel.

Skriv det binära talet 10101011111101 (2) i hexadecimal.

Exempel.

Skriv det binära talet 11101.01111 (2) i hexadecimal.

För att konvertera ett tal från det hexadecimala talsystemet till det binära talsystemet, är det tvärtom nödvändigt att ersätta varje siffra i detta nummer med en tetrad.

Sammanfattningsvis bör det noteras att överföringen av godtyckliga nummer från ett nummersystem till ett annat kan utföras enligt de allmänna reglerna som beskrivs i avsnittet "Binärt talsystem". Men i praktiken utförs omvandlingar av tal från decimalsystemet till de betraktade talsystemen och vice versa genom det binära talsystemet.

Kom också ihåg att hexadecimala och oktala tal bara är ett sätt att representera de stora binära tal som processorn faktiskt arbetar med. I det här fallet är det hexadecimala systemet att föredra, eftersom processorer i moderna datorer manipulerar ord med längden 4, 8, 16, 32 eller 64 bitar, dvs. längden på ord är en multipel av 4. I det oktala talsystemet föredras ord som är multiplar av 3 bitar, till exempel ord med en längd på 12 bitar (som i PDP-8 från DEC).