From c2e43a7849721d3a5195b80e395482ccfa715921 Mon Sep 17 00:00:00 2001 From: Michaelangel007 Date: Fri, 19 Aug 2016 07:17:35 -0700 Subject: [PATCH] Added explanation --- README.MD | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/README.MD b/README.MD index c3b1830..c3eeca5 100644 --- a/README.MD +++ b/README.MD @@ -25,3 +25,64 @@ And enter in `123456789` * `987654321` respectively for A and B ... | Applesoft | 33 s | | Assembly | ~1 s | +# So what the heck is it? + +An alternative algorith to implement multiplication using only: + +* bit-shift (left and right), and +* addition. + +Example of "normal" multiplication: + +In base 10: + +``` + 86 + x 57 + ---- + 602 + 430 + ==== + 4902 +``` + +In base 2: + + 01010110 (86) + 00111001 (57) + -------- + 01010110 (86 * 2^0 = 86) + 00000000 (86 * 2^1 = 172) + 00000000 (86 * 2^2 = 344) + 01010110 (86 * 2^3 = 688) + 01010110 (86 * 2^4 = 1376) + 01010110 (86 * 2^5 = 2752) + ============== + 01001100100110 (4902 = 86*2^0 + 86*2^3 + 86*2^4 + 86*2^5) + +Example of Russian Peasant multiplication: + +In Base 10: + +``` + A B Sum + 86 57 86 + 172 28 86 + 344 14 86 + 688 7 774 + 1376 3 2150 + 2752 1 4902 + +``` + +In Base 2: + +``` + A B Sum Sum = 0 + 01010110 00111001 00000001010110 Sum += A + 010101100 00011100 00000001010110 -- + 0101011000 00001110 00000001010110 -- + 01010110000 00000111 00001100000110 Sum += A + 010101100000 00000011 00100001100110 Sum += A + 0101011000000 00000001 01001100100110 Sum += A +```