Fixed bug with incorrect shift during addition and subtraction of numbers with different order in case if at least one of them is less than zero. Also some code refactoring.
Copypaste typo in test corrected.
Some tests added. Need more tests.