Offset binär
Offset binär , även kallad excess-K , excess -N , excess-e , excess code eller biased representation , är en metod för teckentalsrepresentation där ett signerat tal n representeras av bitmönstret som motsvarar det osignerade talet n + K , K är förspänningsvärdet eller offset . Det finns ingen standard för binär förskjutning, men oftast K för ett n -bitars binärt ord K = 2 n −1 (till exempel skulle förskjutningen för ett fyrsiffrigt binärt tal vara 2 3 =8). Detta har till följd att det minimala negativa värdet representeras av alla nollor, "noll"-värdet representeras av en 1 i den mest signifikanta biten och noll i alla andra bitar, och det maximala positiva värdet representeras av alla- ettor ( bekvämt, detta är samma sak som att använda två-komplement men med den mest signifikanta biten inverterad). Det har också konsekvensen att i en logisk jämförelseoperation får man samma resultat som med en numerisk jämförelseoperation med sann form, medan en logisk jämförelse i tvås komplementnotation kommer att överensstämma med sannforms numerisk jämförelseoperation om och endast om talen är jämfört har samma tecken. Annars kommer känslan av jämförelsen att inverteras, varvid alla negativa värden tas som större än alla positiva värden.
Den 5-bitars Baudot-koden som används i tidiga synkrona multiplexeringstelegrafer kan ses som en offset-1 ( excess-1 ) reflekterad binär (Grå) kod .
Ett historiskt framträdande exempel på offset-64 ( excess-64 ) notation var i flyttalsnotationen (exponentiell) i IBM System/360 och System/370 generationer av datorer. "Karakteristiken" (exponenten) tog formen av ett sju-bitars överskott-64-tal (den högre ordningens bit av samma byte innehöll tecknet för signifikanden ) .
8-bitarsexponenten i Microsoft Binary Format , ett flyttalsformat som användes i olika programmeringsspråk (särskilt BASIC ) på 1970- och 1980-talen, kodades med en offset-129-notation ( excess-129 ).
IEEE Standard for Floating-Point Arithmetic (IEEE 754) använder offsetnotation för exponentdelen i vart och ett av dess olika precisionsformat . Men ovanligt, istället för att använda "excess 2 n −1 " använder den "excess 2 n −1 − 1" (dvs. överskott-15 , överskott-127 , överskott-1023 , överskott-16383 ) vilket betyder att invertering av den inledande (höga) -order) biten av exponenten kommer inte att konvertera exponenten till att korrigera tvås komplementnotation.
Offset binär används ofta i digital signalbehandling (DSP). De flesta analog till digital (A/D) och digital till analog (D/A) chips är unipolära, vilket innebär att de inte kan hantera bipolära signaler (signaler med både positiva och negativa värden). En enkel lösning på detta är att förspänna de analoga signalerna med en DC-offset lika med hälften av A/D- och D/A-omvandlarens räckvidd. Den resulterande digitala datan hamnar sedan i offset binärt format.
De flesta vanliga datorchips kan inte hantera det offset binära formatet direkt [ citat behövs ] . CPU-chips kan vanligtvis bara hantera signerade och osignerade heltal och flyttalsformat. Offset binära värden kan hanteras på flera sätt av dessa CPU-chips. Data kan bara behandlas som heltal utan tecken, vilket kräver att programmeraren hanterar nollförskjutningen i programvaran. Data kan också konverteras till signerat heltalsformat (som CPU:n kan hantera naturligt) genom att helt enkelt subtrahera nolloffset. Som en konsekvens av att den vanligaste offseten för ett n -bitars ord är 2 n −1 , vilket innebär att den första biten inverteras relativt tvås komplement, behövs inget separat subtraktionssteg, utan man kan helt enkelt invertera det första bit. Detta är ibland en användbar förenkling i hårdvara och kan även vara praktisk i mjukvara.
Tabell över offset binär för fyra bitar, med två komplement för jämförelse:
Decimal |
Offset binär, K = 8 |
Tvås komplement |
---|---|---|
7 | 1111 | 0111 |
6 | 1110 | 0110 |
5 | 1101 | 0101 |
4 | 1100 | 0100 |
3 | 1011 | 0011 |
2 | 1010 | 0010 |
1 | 1001 | 0001 |
0 | 1000 | 0000 |
−1 | 0111 | 1111 |
−2 | 0110 | 1110 |
−3 | 0101 | 1101 |
−4 | 0100 | 1100 |
−5 | 0011 | 1011 |
−6 | 0010 | 1010 |
−7 | 0001 | 1001 |
−8 | 0000 | 1000 |
Offset binär kan omvandlas till tvåkomplement genom att invertera den mest signifikanta biten. Till exempel, med 8-bitars värden, kan det förskjutna binära värdet XORed med 0x80 för att konvertera till två komplement. I specialiserad hårdvara kan det vara enklare att acceptera biten som den står, men att tillämpa dess värde i inverterad betydelse.
Relaterade koder
Koda | Typ | Parametrar | Vikter | Distans | Kontroll | Komplement | Grupper om 5 | Enkelt tillägg | ||
---|---|---|---|---|---|---|---|---|---|---|
Offset, k | Bredd, n | Faktor, q | ||||||||
8421 kod | n | 0 | 4 | 1 | 8 4 2 1 | 1–4 | Nej | Nej | Nej | Nej |
Nuding kod | 3 n + 2 | 2 | 5 | 3 | — | 2–5 | Ja | 9 | Ja | Ja |
Stibitz-kod | n + 3 | 3 | 4 | 1 | 8 4 −2 −1 | 1–4 | Nej | 9 | Ja | Ja |
Diamantkod | 27 n + 6 | 6 | 8 | 27 | — | 3–8 | Ja | 9 | Ja | Ja |
25 n + 15 | 15 | 8 | 25 | — | 3+ | Ja | Ja | ? | Ja | |
23 n + 24 | 24 | 8 | 23 | — | 3+ | Ja | Ja | ? | Ja | |
19 n + 42 | 42 | 8 | 19 | — | 3–8 | Ja | 9 | Ja | Ja |
|
|
|
|
|
|
Se även
- Signerade nummerpresentationer
- Binärt tal
- Överskott-3
- Överskott-128
- Exponentbias
- Överskott-Grå kod
- Ens komplement
- Binär offsetbärare
Vidare läsning
-
Gosling, John B. (1980). "6.8.5 Exponentrepresentation". I Sumner, Frank H. (red.). Design av aritmetiska enheter för digitala datorer . Macmillan Computer Science Series (1 upplaga). Institutionen för datavetenskap, University of Manchester , Manchester , Storbritannien: The Macmillan Press Ltd. s. 91, 137. ISBN 0-333-26397-9 .
[…] [w]e använder ett[n exponent]-värde som förskjuts med hälften av talets binära intervall. […] Denna speciella form kallas ibland för en partisk exponent , eftersom det är det konventionella värdet plus en konstant. Vissa författare har kallat det en egenskap, men denna term bör inte användas, eftersom CDC och andra använder denna term för mantissan . Det kallas också för en 'excess -'-representation, där till exempel - är 64 för en 7-bitars exponent (2 7−1 = 64). […]
- Savard, John JG (2018) [2006]. "Decimalrepresentationer" . quadiblock . Arkiverad från originalet 2018-07-16 . Hämtad 2018-07-16 . (OBS. Nämner Excess-3, Excess-6, Excess-11, Excess-123.)
- Savard, John JG (2018) [2007]. "Chen-Ho-kodning och tätt packad decimal" . quadiblock . Arkiverad från originalet 2018-07-03 . Hämtad 2018-07-16 . (OBS. Nämner Excess-25, Excess-250.)
- Savard, John JG (2018) [2005]. "Flytpunktsformat" . quadiblock . Arkiverad från originalet 2018-07-03 . Hämtad 2018-07-16 . (OBS. Nämner Excess-32, Excess-64, Excess-128, Excess-256, Excess-976, Excess-1023, Excess-1024, Excess-2048, Excess-16384.)
- Savard, John JG (2018) [2005]. "Datoraritmetik" . quadiblock . Arkiverad från originalet 2018-07-16 . Hämtad 2018-07-16 . (OBS. Nämner Excess-64, Excess-500, Excess-512, Excess-1024.)