Sign-Balanced Digiting

Say you’re doing addition. And say you’re using base ten, so the digits you have are 0, 1, 2, 3, 4, 5, 6, 7, 8, and 9. Let’s say you’re doing 357822+461279. If you did it conventionally, right-to-left, you’d add the 2 to the 9 and get 1 with a carry of 1; then add 1, 2, and 7 to get 0 with a carry of 1; then add 1, 8, and 2 to get 1 with a carry of 1; then add 1, 7, and 1 to get 9; then add 5 and 6 to get 1 with a carry of 1; then add 1, 3, and 4 to get 8 for the final digit. This arrives at an answer of 819101.

But maybe you can do a bit more in your head and decide to put some value into getting higher-place digits first, so that you work your way closer to the exact answer. This left-to-right process has some benefits, for example, if you decide to cut off at some point in the process, you’re at least not far off from the exact value and have a good estimation. 3 plus 4 is 7, but oh look, a carry is coming from the next digit, so make that an 8; 5 plus 6 is 11, which we put as 1 because we’ve taken care of the carry; 7 plus 1 is 8, but after the carry from the next digit that will be 9; 8 plus 2 is 10, and since we took care of the carry we put a 0; 2 plus 7 is 9, but wait, there’s a carry in the next digit over, so this 9 becomes a 10, but that means we have to deposit the 0 and erase the previous digit we wrote, that 0 in the hundreds place, and make that a 1; now that carry chain is taken care of, so we can finally deal with the ones place, where 2 plus 9 is 11, and since we took care of that carry, we finally have a 1. The answer is 819101.

So the second method has the advantages that it is much easier to carry out in the mind than the first method, and brings about approximations to the final answer along the way rather than only getting close via the final leap to the exact answer. It, however, faces a problem of carry-chains that could potentially be nearly as long in digits as the numbers themselves, where we’d have to backtrack and correct a bunch of digits. I find that the benefits of left-to-right addition much outweigh the issues, and thus that is my preferred way of performing addition.

But in both cases, performing the addition in memory requires the holding of not just the digits but also a set of carry digits; about half the time, one has to be concerned about a carry digit coming over. (Of the 10*10=100 possible pairs of digits to be added in one place, there are 0+1+2+3+4+5+6+7+8+9=45 pairs that result in a carry, so the exact proportion of additions that require a carry is \frac{45}{100}=\frac{9}{20}, slightly less than half.) This is an annoying thing to have to do so frequently when performing addition.

Now, consider what would follow if we happened to use a different set of digits. What if our digits were -5, -4, -3, -2, -1, 0, 1, 2, 3, and 4? (From here on in this post, I will notate the negative digits as (5), (4), (3), (2), and (1) respectively.) Using this system, instead of writing high-valued digits, we write them as negative digits with an incremented next digit. For example, 6 is 1(4) (representing 1*10-4*1), 67 is 1(3)(3) (representing 1*100-3*10-3*1), and 835 is 1(2)4(5) (representing 1*1000-2*100+4*10-5*1). Got it? Okay, let’s do some addition.

We use the same addition problem as before, 357822+461279. Except of course these numbers are actually written 4(4)(2)(2)22+1(5)(4)13(2)(1) in our new system, which I will from here on call Sign-Balanced Digiting (SBD). Using right-to-left, we get 2+(1)=1 (no carry), 2+(2)=0 (no carry), (2)+3=1 (no carry), (2)+1=(1) (no carry), (4)+(4)=2 (carry of (1)), and 4+(5)+(1)=(2) (no carry), and a millions digit of 1. Our answer is 1(2)2(1)101.

Wow, we did all that only needing to do one carry. Is this a coincidence?

It turns out this is an addition problem that is exceptionally favorable for SBD, but on average, SBD does in fact do better than the conventional digit system, only requiring a carry in 5+4+3+2+1+0+1+2+3+4=25 possible pairs of digits, so that the proportion of additions that require a carry is \frac{25}{100}=\frac{1}{4}. The annoying necessary extra digits to remember just got nearly halved.

On the other hand, there’s now two possibilities for carry digits that could need to be remembered: whereas with the conventional digit system we had just 1, here we could end up with 1 or (1) to carry, when adding two numbers.

But are there even cooler things we could do with SBD?

Yes! Because we’re balancing out the deviation brought about by each digit, we are making it such that cutting off lower-place-value digits on average change the value by smaller amounts, thus making high-digit estimations more accurate. In fact, when we are rounding SBD numbers, we never even need to increment the place value rounded to; we always only need to truncate. For example, 1(4)(3)33(4)0(5)(2) rounds to 100000000, 1(4)0000000, 1(4)(3)000000, 1(4)(3)300000, 1(4)(3)330000, 1(4)(3)33(4)000, or 1(4)(3)33(4)0(5)0.

And when we add more than 2 numbers, it gets even better. With conventional digits, carries get hairier and hairier with more numbers to add, but with SBD, although they have the potential to get pretty bad, they tend to cancel out. Notice in the following example how in the case of SBD (bottom), there are both fewer and smaller carries.


How about multiplication? No problem! Just do multiplication as before, and remember that like signs multiply to positives and unlike signs multiply to negatives.


In fact, squaring numbers in general becomes easier, and the squaring of numbers actually numerically follows the general path of speedy mental squaring using binomial expansions. As an alternative method of number representation, Sign-Balanced Digiting has quite a few neat properties.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s