41
$\begingroup$

I'm a software engineer, and I often double numbers especially when doing binary to decimal conversions. When numbers get large, I have trouble doubling a number in my head without using paper. For example, I can double 128 in my head easily because it's common and I have it memorized, but numbers like 183 get more difficult.

Is there some clever trick I can use to mentally double any number? I'm probably being idealistic, but it would be nice to have 4 digit numbers be just as easy to double as 2 digit numbers.

$\endgroup$
  • 7
    $\begingroup$ I usually go left-to-right; this has the advantage of giving me a "guesstimate" of how big it'll get. So, $183\times2=200+160+6$ (alternatively, I'm used to angles, so I know $180\times 2=360$ off the bat). (In binary of course, it's as simple as appending a $0$. ;)) As for converting binary to decimal: you might be interested in Horner's method: less arithmetic and fuss. $\endgroup$ – J. M. is a poor mathematician Dec 27 '16 at 15:51
  • 9
    $\begingroup$ This question has the "binary" tag, but it doesn't seem to be related to binary numbers. If you're talking specifically about the binary representation, then just add a zero to the right: $10\times 101101010110 = 101101010110\color{red}{0}$. $\endgroup$ – Wood Dec 27 '16 at 15:54
  • 1
    $\begingroup$ @Wood Sorry, I guess I'm not smart enough about math in general to find the right tag. I was forced to pick one. $\endgroup$ – void.pointer Dec 27 '16 at 16:00
  • $\begingroup$ @void.pointer Isn't there a mental math tag? I thought there was. $\endgroup$ – Sean English Dec 27 '16 at 16:49
  • 1
    $\begingroup$ Note: I might not do it in my head if it’s already full of the coding or engineering problem. Jot it down on paper: sometimes it’s easy to just write down the double too, afterwards, using the left-to-right method but not having to clear up some of your mental scratchpad. $\endgroup$ – JDługosz Dec 28 '16 at 6:44

10 Answers 10

57
$\begingroup$

I usually look for an easy calculation that is close by the original one.

For example:

$2 \times 183 = 2 \times 180 + 6=366$

or

$ 2\times 1481= 2 \times 1500 - 38 = 2960+2$

$\endgroup$
  • 12
    $\begingroup$ My way, same here +1 $\endgroup$ – Vidyanshu Mishra Dec 27 '16 at 15:56
  • 1
    $\begingroup$ I don't understand the 2960 + 2 at the end (The +2 part), especially since you already have - 38 before that. Did you mean - 40 instead? $\endgroup$ – void.pointer Dec 27 '16 at 16:03
  • 1
    $\begingroup$ @void.pointer It follows the same rule! i can't subtract 38 easily so i use 40 and next add 2! $\endgroup$ – MR_BD Dec 27 '16 at 16:04
  • 2
    $\begingroup$ Ok I get it; you weren't showing the interim "rounding" steps so I got confused. This is a pretty easy and flexible approach. $\endgroup$ – void.pointer Dec 27 '16 at 16:05
  • 1
    $\begingroup$ I do this too. It also helps with multiplication by numbers other than 2, addition and subtraction. $\endgroup$ – Devsman Dec 28 '16 at 19:51
53
$\begingroup$

It may help to partition the number into smaller numbers that lead with a number less than 5. The idea being that you can double each of these smaller numbers independently then combine their answers without having to worry about "carrying the one".

Example: $$18397238$$ Partitions into $$\underline{18}\,\underline{397}\,\underline{2}\,\underline{38}.$$ Doubling each one yields $$\underline{36}\,\underline{794}\,\underline{4}\,\underline{76}$$

This is efficient if there are a lot of numbers less than $5$ in your number, but not so much otherwise.

Edit: It should be noted that this technique can work in tandem with many of the other methods mentioned, and can actually make them easier to use. For example, if you first think of the number grouped according to my strategy, then use the left-to-right method outlined in David K's answer on each group, every digit has a carried 1 except the last, so you don't even have to think about what the digit to the right is when you are doubling.

$\endgroup$
  • 2
    $\begingroup$ This can be pretty effective for a lot of numbers. The OPs example of 183 doesn't stand a chance. $\endgroup$ – Kaynex Dec 27 '16 at 16:12
  • 1
    $\begingroup$ Good idea but as you mentioned at the end, won't work too well for numbers like 78987 $\endgroup$ – void.pointer Dec 27 '16 at 16:32
  • $\begingroup$ I use a similar method which works well with almost every number :) $\endgroup$ – ABcDexter Dec 28 '16 at 6:01
  • 3
    $\begingroup$ @abcdexter please do share 🙂 $\endgroup$ – void.pointer Dec 28 '16 at 14:45
  • $\begingroup$ Ok, adding the answer :) $\endgroup$ – ABcDexter Dec 29 '16 at 12:11
10
$\begingroup$

You can very well work from left to right (which is the way you spell and utter the number). Just double the current digit and anticipate a carry from the next one (if $5$ to $9$).

Examples:

$192$ yields $284$ without carries and $\bar384$ with.

$9999$ yields $08888/\bar1\bar9\bar9\bar98$.

$123456789$ yields $246802468/246\bar9\bar1\bar3\bar5\bar78$.

I don't mean that you should double all digits then process the carries. On the opposite, generate double+carry form left to right, in a single pass.

This essentially amounts to mechanically applying the regular table below: $$ 00,01,02,03,04\to0\\ 05,06,07,08,09\to1\\ 10,11,12,13,14\to2\\ 15,16,17,18,19\to3\\ 20,21,22,23,24\to4\\ 25,26,27,28,29\to5\\ 30,31,32,33,34\to6\\ 35,36,37,38,39\to7\\ 40,41,42,43,44\to8\\ 45,46,47,48,49\to9\\ 50,51,52,53,54\to0\\ 55,56,57,58,59\to1\\ 60,61,62,63,64\to2\\ 65,66,67,68,69\to3\\ 70,71,72,73,74\to4\\ 75,76,77,78,79\to5\\ 80,81,82,83,84\to6\\ 85,86,87,88,89\to7\\ 90,91,92,93,94\to8\\ 95,96,97,98,99\to9\\ $$

$\endgroup$
  • $\begingroup$ Great way to go; after five minutes practice, I can easily double numbers of arbitrary length. In doubling, the propagation of the carry is limited to one column at a time, so only one digit of look ahead is needed to determine the carry. You have changed my life! $\endgroup$ – richard1941 Jan 3 '17 at 19:52
  • $\begingroup$ @richard1941: glad to know, thank you for the feedback. Enjoy 4034 ! $\endgroup$ – Yves Daoust Jan 3 '17 at 20:08
8
$\begingroup$

There is a mental-arithmetic trick for doubling a number that works from left to right.

The rule for most of the digits of the result is as follows. First, multiply the digit by two, ignoring the tens place of this intermediate result. For example, if the original digit is $7,$ since twice $7$ is $14$ the result of this step is $4.$ (One way to think of this is "ignore the carry digit," which would have been the leading $1$ in this example.) Next, if the next digit to the right in the original number is $5$ or greater, add one.

For the first digit, however, do not discard the carry digit; just double the first digit and (if the next digit is $5$ or greater) add one. For the last digit, of course, there is no "next digit" so there is no "add one" step.

So to double $678948,$ we initially get the digits $13$ (from $2\times6+1,$ since $7 \geq 5$), then $5$ (since $2\times7=14$ and $4+1=5$), then $7,$ then $8$ (since $2\times9=18$ and the next digit, $4,$ is less than $5$), then $9,$ then $6.$ The final result is $1357896.$

There are variations on this method. If a digit (other than the first one) in the original number is $5$ or greater, you can subtract $5$ before doubling it. Alternatively, you can take the digits in "blocks" of more than one at a time. For example if you see a pair of consecutive digits that form an easy-to-double two-digit number, double that number; if this is not the first two digits of the original number discard the "carry" (that is, $77$ doubled is $154,$ but you just use $54$); then add $1$ if the next digit is $5$ or greater. (Even if you are going to treat the next two or three digits as another "block," you only need to look at the first digit of the block to decide whether to add one to the previous block of the result.)

You can even combine the two variations (subtract $5$ and multiply "blocks" of digits) if you like; just remember that if you subtract $5,$ subtract it from the leftmost digit of the block of digits. If we take the previous example, $678948,$ in blocks of two digits each, we get initially $2\times67+1=135$, then from $89$ we get $2\times39=78,$ and finally $2\times48=96.$


The peculiar feature of multiplication by two that this trick exploits is that it's extremely easy to tell what the "carry" digit is going to be at any stage of the multiplication without actually working out all the digits to the right. So each time you are working on a particular digit or block of digits, you don't have to remember what previously happened during multiplication of the digits to the right; you just have to look at the next digit to the right to decide whether the digit you're about to include in your result should be (for example) $8$ or $9.$

It is not so easy to predict the carry digits when multiplying by numbers other than $2,$ which is (I think) why most schools don't bother to teach this trick.

The thing I find most difficult in mental arithmetic of this sort is remembering the result long enough to use it for whatever purpose I needed it. That's one reason I try to keep a pencil and some scrap paper handy when I'm programming or debugging.

$\endgroup$
5
$\begingroup$

If you want to get the digits from left to right (which is not said in the question, but maybe implicit, since going right-to-left doubling is really easy for any length of number), just add a final digit$~0$ at the right and then mentally divide the resulting number by$~5$. This is not hard; each time just find the quotient and remainder for a number below $50$. I think the other left-to-right answers given here just describe what this method amounts to.

$\endgroup$
  • $\begingroup$ Dunno about you, but I find dividing by five mentally more difficult than doubling or halving. $\endgroup$ – J. M. is a poor mathematician Dec 29 '16 at 8:51
  • $\begingroup$ I personally often do the "multiply by 10, divide by 5" method, sometimes in reverse for halving. $\endgroup$ – loa_in_ Dec 29 '16 at 11:42
4
$\begingroup$

I find doubling is easy to do in my head if I work right to left as I would with usual multiplication or addition.

For 183 for example: double 3 to get 6, double 8 to get 16, remember the 1 to carry, double 1 to get 2, add the carried 1 and get 366.

It doesn't write down nicely since it's more of a mental process than a mathematical one. I literally just do out the steps for hand multiplication; since it's only ×2 it's usually easy to keep track of numbers. Since you're working right to left you can always write down the digit you just found out, that way you just have the carry any higher order digits over without remembering anything else. Come to think of it, when doubling it's really easy since the number you carry over is only ever 1.

$\endgroup$
  • $\begingroup$ IMO, remembering to carry is the hard part, and the cause of most errors in mental arithmetic. $\endgroup$ – bishop Dec 28 '16 at 17:39
  • 1
    $\begingroup$ @bishop That's why I like the left-to-right method. $\endgroup$ – David K Dec 28 '16 at 17:49
4
$\begingroup$

Responding just to one part:

I'm probably being idealistic, but it would be nice to have 4 digit numbers be just as easy to double as 2 digit numbers.

If you have a four digit number, e.g., $7215$, then you can think of it as: $72(100) + 15$.

So, responding to the quotation-pull above, let us double the 2 two digit numbers:

$72$ doubled is $144$, and $15$ doubled is $30$. Together, you get $14400 + 30 = 14430$.

Similarly, you give the example of $183$, which is: $1(100) + 83$.

$1$ doubled is $2$, and $83$ doubled is $166$. Together, you get $200+166 = 366$.

I have written out the steps here, but I think this method can be carried out mentally and should at least help with the goal stated in the body of your post ("to have 4 digit numbers be just as easy to double as 2 digit numbers") if not the title of your post ("double any size number").

$\endgroup$
2
$\begingroup$

Although this does not answer your question, your question is a great one! Back in high school, in the mid 1950's we had no calculators. We were given a table of logs to four decimal places. I was ridiculed by my math teacher, "How can you get logarithms to five decimal places from a four-place table?" I never told her what I was doing.

My secret method was to memorize the log of 2 to a large number of decimal places and to mentally double the number whose log was to be taken. Of course, for logs to base 2, and in binary arithmetic, this could be trivial... Perhaps that suggests an efficient algorithm for logs... Hmm...

Thanks for a great question.

$\endgroup$
1
$\begingroup$

The way which works for me is :

  • Take the number, make a pair of two digits starting from right to left.
  • Now, multiply each pair by two, and do remember the carry to the next i.e. left pair to it.
  • In case the carry from right pair is zero, then it's fine, otherwise add the carry after multiplying this current pair by 2.

For example: here c stands for carry.
A simple example for a power of $2$.

$ 4096 \to \underline{40}\ \underline{96} $

$ (\underline{40}\ \underline{96}) *2 \to (\underline{40}\ *2+[c] , \underline{96} *2)$

$ (\underline{40}\ *2+[1] , \underline{92}) \to (\underline{81}\ \underline{92}) $


A simple example for a number with odd(5) length.

$ 98765 \to \underline{9}\ \underline{87}\ \underline{65} $

$ (\underline{9}\ \underline{87}\ \underline{65} \ )*2 \to (\underline{9}\ *2+[c] , \underline{87}\ *2+ [c], \underline{65} *2 ) $

$ (\underline{9}\ *2+[c] , \underline{87}\ *2+ [1], \underline{30} \to (\underline{9}\ *2+[1] , \underline{75}, \underline{30} )$

$ (\underline{18}+[1] , \underline{75}, \underline{30} ) \to (\underline{19} \ \underline{75}\ \underline{30} ) $


A (pseudo)number this time, using the following Python code

import random
n=random.randint(1,2**(random.randint(2,100)))
print(n)

266103712878030

length is $15$

$266103712878030 \to \underline{2}\ \underline{66}\ \underline{10}\ \underline{37}\ \underline{12}\ \underline{87}\ \underline{80}\ \underline{30})$

$(\underline{2}\ \underline{66}\ \underline{10}\ \underline{37}\ \underline{12}\ \underline{87}\ \underline{80}\ \underline{30}) *2 \to $ $ (\underline{2}\ *2+[c] , \underline{66}\ *2+[c] , \underline{10}\ *2+[c] , \underline{37}\ *2+[c] , \underline{12}\ *2+[c] , \underline{87}\ *2+[c] , \underline{80}\ *2+[c] , \underline{30}*2)$

$ (\underline{2}\ *2+[c] , \underline{66}\ *2+[c] , \underline{10}\ *2+[c] , \underline{37}\ *2+[c] , \underline{12}\ *2+[c] , \underline{87}\ *2+[c] , \underline{80}\ *2+[c] , \underline{30} *2) \to$ $ (\underline{2}\ *2+[c] , \underline{66}\ *2+[c] , \underline{10}\ *2+[c] , \underline{37}\ *2+[c] , \underline{12}\ *2+[c] , \underline{87}\ *2+[1] , \underline{60}\ *2+[0] , \underline{60})$

$ (\underline{2}\ *2+[c] , \underline{66}\ *2+[c] , \underline{10}\ *2+[c] , \underline{37}\ *2+[c] , \underline{12}\ *2+[1] , \underline{74}+[1] , \underline{60}\ *2 , \underline{60}) \to$ $ (\underline{2}\ *2+[c] , \underline{66}\ *2+[c] , \underline{10}\ *2+[c] , \underline{37}\ *2+[0] , \underline{24}\ +[1] , \underline{75}\ , \underline{60} , \underline{60})$

$ (\underline{2}\ *2+[c] , \underline{66}\ *2+[c] , \underline{10}\ *2+[0] , \underline{74}\ *2+[0] , \underline{25}\ , \underline{75}\ , \underline{60} , \underline{60}) \to$ $ (\underline{2}\ *2+[c] , \underline{66}\ *2+[0] , \underline{20}\ +[0] , \underline{74}\ , \underline{25}\ , \underline{75}\ , \underline{60} , \underline{60})$

$ (\underline{2}\ *2+[1] , \underline{32}\ +[0] , \underline{20}\ , \underline{74}\ , \underline{25}\ , \underline{75}\ , \underline{60} , \underline{60}) \to $ $ (\underline{2}\ *2+[1] , \underline{32}\ , \underline{20}\ , \underline{74}\ , \underline{25}\ , \underline{75}\ , \underline{60} , \underline{60}) $

$ (\underline{2}\ *2+[1] , \underline{32}\ , \underline{20}\ , \underline{74}\ , \underline{25}\ , \underline{75}\ , \underline{60} , \underline{60}) \to $ $ (\underline{4}\ +[1] , \underline{32}\ , \underline{20}\ , \underline{74}\ , \underline{25}\ , \underline{75}\ , \underline{60} , \underline{60}) $

$ (\underline{5} , \underline{32}\ , \underline{20}\ , \underline{74}\ , \underline{25}\ , \underline{75}\ , \underline{60} , \underline{60}) $


The reason i use this algorithm is that

  1. It's easier to multiply two digits at a time, also i happen to remember the multiplication easily for the numbers under 100.
  2. It is faster than to multiply single digit at a time (but slower than 3 or 4 at a time). We can negotiate this for simplicity as we are doing calculation in mind.
  3. Also, when you re-iterate and make the final number from left to right you can easily recall the numbers you have just calculated, if not then multiply upcoming pair again.
$\endgroup$
0
$\begingroup$

As a simple trick you can use $(a-b)(a+b)=a^2-b^2$ sometimes. For example

$$102*98=100^2-2^2=9996$$

But it needs to memorize some perfect squares

$\endgroup$

Not the answer you're looking for? Browse other questions tagged or ask your own question.