Excess-3
|
1 |
|
1111 |
|
1111 |
|
1110 |
|
0000 |
|
|
|
0110 |
|
0101 |
|
0111 |
|
1000 |
|
|
+ |
1001 |
+ |
1010 |
+ |
1011 |
+ |
0100 |
|
0110 |
|
0000 |
|
0000 |
|
0100 |
|
0110 |
|
0001 |
|
0000 |
|
0000 |
|
0010 |
|
1100 |
+ |
0011 |
+ |
0011 |
+ |
0011 |
+ |
0011 |
- |
0011 |
(2) |
0100 |
|
0011 |
|
0011 |
|
0101 |
|
1001 |
(10) |
1 |
|
0 |
|
0 |
, |
2 |
|
6 |
(Excess-3) |
4 |
|
3 |
|
3 |
, |
5 |
|
9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Jeśli nastąpiło przeniesienie z jednej grupy na drugą, to będzie taki znak "+", natomiast jeśli nie, to taki "-". Aczkolwiek, jeżeli przeniesienie nastąpiło na grupę, która nie istnieje (null), to znak będzie chyba zawsze taki "+", ale to trzeba sprawdzić. Jeśli jest to Excess-3, to albo dodajemy 0011 (3) albo odejmujemy 0011 (3).
Jeśli nastąpi przeniesienie (carry) na grupę bitów, które nie istnieją (null), to następna grupa bitów ma znak "+".
W skrócie:
Final Carry <-- 0 then subtraction
Final Carry <-- 1 then addition
Przykład:
5 + 6 = 11
1000
+ 1001
____________
+ 0001 + 0001
+ 0011 + 0011
____________
0100 0100
Na wikipedii jest tabela kodów, jaką cyfrę podstawić za 4 bity: https://en.wikipedia.org/wiki/Excess-3
Polecam także dokumentację Intel'a: https://software.intel.com/sites/default/files/managed/39/c5/325462-sdm-vol-1-2abcd-3abcd.pdf
Jak sprawdzać, to jakie bity odpowiadają jakiej cyfrze. A no tak:
Chcemy sprawdzić np. jaki jest kod dla cyfry 3, postępujemy więc tak:
3 + 3 = 6(10) = 0110(2)
Teraz już wiemy, że kod dla 3 to 0110 w Excess-3.
Gdy już się sprawdzi jaka cyfra, jaki ma kod to można podstawić do wzoru. I tak w kolumnie 4 i dalej na samej górze w 2 wierszu jest:
0110 = 3, 0101 = 2, 0111 = 4, 1000 = 5
Wyszła liczba 32.45.
1001 = 6, 1010 = 7, 1011 = 8, 0100 = 1
Liczba po złączeniu, to 67.81.
Zaznaczone na zielony kolor komórki, to przeniesienie (pożyczka) bitu. Na żółto rezultat - sprawdzenie, czy wynik się zgadza.
https://www.youtube.com/watch?v=tycdhh83v6E
https://www.youtube.com/watch?v=CXn4lxBlO2U
Jak sprawdzić, czy rezultat jest poprawny? A np. tak:
Z racji tego, że jest to kodowanie "do trzech", to do każdej cyfry z sumy 32.45 + 67.81 = 100,26 dodajemy cyfrę 3.
Przykład:
Checking Result
|
1 |
|
0 |
|
0 |
, |
2 |
|
6 |
+ |
3 |
+ |
3 |
+ |
3 |
+ |
3 |
+ |
3 |
|
4 |
|
3 |
|
3 |
, |
5 |
|
9 |
https://eduinf.waw.pl/inf/alg/006_bin/0024.php
https://eduinf.waw.pl/inf/alg/006_bin/0012.php
https://pl.wikipedia.org/wiki/Complex_Number_Calculator
https://en.wikipedia.org/wiki/Binary-coded_decimal