Algorytm konwersji liczb binarnych na postać znakową
: niedziela 07 sty 2018, 10:59
Już dawno miałem zamiar opisania algorytmu konwersji liczb binarnych (dowolnej długości) na postać znakową. Algorytm ten polega na cyklicznej (tyle razy, ile bitów ma cała liczba) realizacji operacji przesunięcia o jeden bit i wykonania w pewnych przypadkach korekcji. Wszystkie operacje (sprawdzenie, czy konieczna jest korekcja oraz sama korekcja) są realizowane na 4-bitowych tetradach. Jeżeli 4-bitowa zawartość jest większa lub równa 5, to do tej tetrady należy dodać liczbę 3 (to jest ta wspomniana korekcja). Po wykonaniu wymaganej liczby operacji przesunięcia, wejściowa liczba jest zapisana w kodzie BCD, czyli każde 4 bity reprezentuje kolejne cyfry liczby. Do przejścia na postać znakową, do każdej tetrady należy dodać 30 hex (kod znaku '0').
Do ilustracji algorytmu napisałem odpowiedniego PDF'a, gdyż opisanie tego samego w poście jest upierdliwe (a może nawet niemożliwe). W PDF'ie wyszarzenie symbolizuje podział na 4-bitowe tetrady. Kolorem zielonym zaznaczyłem wsuwające się w wyniku przesunięcia zera.
Rozwiązanie to stosowałem również w układach FPGA do konwersji binarnych zawartości różnych rejestrów na postać znakową na wyświetlacz.
Załącznik ilustrujący algorytm:
Do ilustracji algorytmu napisałem odpowiedniego PDF'a, gdyż opisanie tego samego w poście jest upierdliwe (a może nawet niemożliwe). W PDF'ie wyszarzenie symbolizuje podział na 4-bitowe tetrady. Kolorem zielonym zaznaczyłem wsuwające się w wyniku przesunięcia zera.
Rozwiązanie to stosowałem również w układach FPGA do konwersji binarnych zawartości różnych rejestrów na postać znakową na wyświetlacz.
Załącznik ilustrujący algorytm: