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

Kodjämförelse
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
Decimal
 
0
1
2
3
4
5
6
7
8
9
8421
4 3 2 1
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
Stibitz
4 3 2 1
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
Nuding
5 4 3 2 1
0 0 0 1 0
0 0 1 0 1
0 1 0 0 0
0 1 0 1 1
0 1 1 1 0
1 0 0 0 1
1 0 1 0 0
1 0 1 1 1
1 1 0 1 0
1 1 1 0 1
Diamant
8 7 6 5 4 3 2 1
0 0 0 0 0 1 1 0
0 0 1 0 0 0 0 1
0 0 1 1 1 1 0 0
0 1 0 1 0 1 1 1
0 1 1 1 0 0 1 0
1 0 0 0 1 1 0 1
1 0 1 0 1 0 0 0
1 1 0 0 0 0 1 1
1 1 0 1 1 1 1 0
1 1 1 1 1 0 0 1
19 n + 42
8 7 6 5 4 3 2 1
0 0 1 0 1 0 1 0
0 0 1 1 1 1 0 1
0 1 0 1 0 0 0 0
0 1 1 0 0 0 1 1
0 1 1 1 0 1 1 0
1 0 0 0 1 0 0 1
1 0 0 1 1 1 0 0
1 0 1 0 1 1 1 1
1 1 0 0 0 0 1 0
1 1 0 1 0 1 0 1

Se även

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.)