**Ortiqcha-3**, **3-ortiqcha** yoki **10-ortiqcha-3** ikkilik kod (koʻpincha **XS-3**, **3XS** yoki **X3** sifatida qisqartiriladi), **oʻzgaruvchi binar** yoki **Stibitz kodi** (1937-yilda oʻrni asosidagi qoʻshish mashinasini qurgan Jorj Stibitzdan keyin) oʻz-oʻzini toʻldiruvchi ikkilikdir. -Kodlangan oʻnlik (BCD) kod va raqamlar tizimidir. Bu noxolis vakillik. Ortiqcha-3 kodi baʼzi eski kompyuterlarda, shuningdek, kassa apparatlari va 1970-yillarning qoʻlda koʻchma elektron kalkulyatorlarida va boshqa maqsadlarda ham ishlatilgan.

Vakillik
--------

Notoʻgʻri kodlar — bu qiymat sifatida oldindan belgilangan *N* raqamidan foydalangan holda ijobiy va salbiy raqamlarning muvozanatli soni bilan qiymatlarni ifodalash usuli. Notoʻgʻri kodlar (va kulrang kodlar) vaznsiz kodlardir. 3 tadan ortiq kodda raqamlar oʻnlik raqamlar sifatida ifodalanadi va har bir raqam toʻrt bit bilan raqam qiymati va 3 („ortiqcha" miqdor) sifatida ifodalanishi mumkin:

* Eng kichik ikkilik son eng kichik qiymatni bildiradi (0 − excess).
* Eng katta ikkilik son eng katta qiymatni bildiradi (2*N*+1 − excess − 1).

Ortiqcha-3 va Stibitz kodi| Oʻnlik | Ortiqcha — 3 | Stibitz | BCD 8-4-2-1 | Ikkilik | 3/6 CCITT</br> kengaytma | 4/8 Xemming</br> kengaytma |
| --- | --- | --- | --- | --- | --- | --- |
| − 3 | **0000** | psevdo-tetrade | Yoʻq | Yoʻq | Yoʻq | Yoʻq |
| − 2 | **0001** | psevdo-tetrade |
| − 1 | **0010** | psevdo-tetrade |
| **0** | **0011** | **0011** | 0000 | 0000 | … **10** | … **0011** |
| **1** | **0100** | **0100** | 0001 | 0001 | … **11** | … **1011** |
| **2** | **0101** | **0101** | 0010 | 0010 | … **10** | … **0101** |
| **3** | **0110** | **0110** | 0011 | 0011 | … **10** | … **0110** |
| **4** | **0111** | **0111** | 0100 | 0100 | … **00** | … **1000** |
| **5** | **1000** | **1000** | 0101 | 0101 | … **11** | … **0111** |
| **6** | **1001** | **1001** | 0110 | 0110 | … **10** | … **1001** |
| **7** | **1010** | **1010** | 0111 | 0111 | … **10** | … **1010** |
| **8** | **1011** | **1011** | 1000 | 1000 | … **00** | … **0100** |
| **9** | **1100** | **1100** | 1001 | 1001 | … **10** | … **1100** |
| 10 | **1101** | psevdo-tetrade | psevdo-tetrade | 1010 | Yoʻq | Yoʻq |
| 11 | **1110** | psevdo-tetrade | psevdo-tetrade | 1011 |
| 12 | **1111** | psevdo-tetrade | psevdo-tetrade | 1100 |
| 13 | Yoʻq | Yoʻq | psevdo-tetrade | 1101 |
| 14 | psevdo-tetrade | 1110 |
| 15 | psevdo-tetrade | 1111 |

127 kabi raqamni kodlash uchun oʻnlik raqamlarning har birini yuqoridagi kabi kodlash kifoya boʻladi va (0100, 0101, 1010).

Ortiqcha-3 arifmetikasi oddiy noaniq BCD yoki ikkilik pozitsion tizim raqamlariga qaraganda turli xil algoritmlardan foydalanadi. Ikki ortiqcha-3 raqamni qoʻshgandan soʻng, xam summa ortiqcha-6 boʻladi. Masalan, 1 (ortiqcha-0100) va 2 (ortiqcha-3-0101) qoʻshilgandan soʻng, yigʻindi 3 (ortiqcha-3-0110) oʻrniga 6 (ortiqcha-3-1001) ga oʻxshaydi. Ushbu muammoni hal qilish uchun ikkita raqam qoʻshilgandan soʻng, agar natijada olingan raqam oʻnlik 10 dan kichik boʻlsa, ikkilik 0011ni (ob’ektiv ikkilikdagi oʻnlik 3) ayirish yoki ikkilik 1101ni (ob’ektivda oʻnlik 13 ayirish orqali qoʻshimcha chiziqni olib tashlash kerak) agar toshib ketish (tashish) sodir boʻlsa. (4-bitli ikkilik tizimda ikkilik 1101ni ayirish 0011ni qoʻshishga teng va aksincha)

Motivatsiya
-----------

Notoʻgʻri kodlashdan koʻra ortiqcha-3 kodlashning asosiy afzalligi shundaki, oʻnlik sonni toʻqqizlik bilan toʻldirish mumkin (ayirish uchun) ikkilik sonni birlarni toʻldirish mumkin boʻlgani kabi: faqat barcha bitlarni teskari aylantirish orqali. Bundan tashqari, ikkita ortiqcha 3 ta raqam yigʻindisi 9 dan katta boʻlsa, 4 bitli qoʻshimchaning tashish biti yuqori boʻladi. Bu ishlaydi, chunki ikkita raqam qoʻshilgandan soʻng, 6 ning „ortiqcha" qiymati yigʻindiga olib kelinadi. 4-bitli butun son faqat 0 dan 15 gacha boʻlgan qiymatlarni oʻz ichiga olishi mumkinligi sababli, 6 dan ortigʻi 9 dan ortiq har qanday summa toʻlib ketishini anglatadi (amalga oshirishni keltirib chiqaradi).

Yana bir afzalligi shundaki, 0000 va 1111 kodlari hech qanday raqam uchun ishlatilmaydi. Xotira yoki asosiy uzatish liniyasidagi nosozlik ushbu kodlarga olib kelishi mumkin. Magnit muhitga nol qiymatni yozish ham qiyinroq.

Misol
-----

VHDL da BCD 8-4-2-1 dan ortiq-3 konverteri misoli:

```
entity bcd8421xs3 is
 port (
 a : in std\_logic;
 b : in std\_logic;
 c : in std\_logic;
 d : in std\_logic;

 an : buffer std\_logic;
 bn : buffer std\_logic;
 cn : buffer std\_logic;
 dn : buffer std\_logic;

 w : out std\_logic;
 x : out std\_logic;
 y : out std\_logic;
 z : out std\_logic
 );
end entity bcd8421xs3;

architecture dataflow of bcd8421xs3 is
begin
 an <= not a;
 bn <= not b;
 cn <= not c;
 dn <= not d;

 w <= (an and b and d ) or (a and bn and cn)
 or (an and b and c and dn);
 x <= (an and bn and d ) or (an and bn and c and dn)
 or (an and b and cn and dn) or (a and bn and cn and d);
 y <= (an and cn and dn) or (an and c and d )
 or (a and bn and cn and dn);
 z <= (an and dn) or (a and bn and cn and dn);

end architecture dataflow; — of bcd8421xs3

```

* 3/6 kod kengaytmasi: Ortiqcha-3 kod baʼzan maʼlumotlarni uzatish uchun ham ishlatiladi, keyin koʻpincha CCITT GT uchun 6 bitli kodga kengaytiriladi 43 Yoʻq. 1, bu erda 6 bitdan 3 tasi oʻrnatiladi.
* 4/8 kod kengaytmasi: IBM qabul qiluvchi kodiga muqobil sifatida (bu Hamming masofasi 2 ga teng 4/8 kod), 4-kodni ham belgilash mumkin.ortiqcha-3 kod kengaytmasi, agar faqat denar raqamlari oʻtkazilishi kerak boʻlsa, Hamming masofasi 4 ga eltadi.

Yana qarang
-----------

* Ofset ikkilik, ortiqcha- *N*, noaniq vakillik
* Ortiqcha — 128
* Haddan tashqari kulrang kod
* Oʻzgartirilgan kulrang kod
* Kulrang kod
* m-of-n kodi
* Aiken kodi