# how to multiply two integers using bitwise operators

Discussion in 'C Programming' started by sandy_pt_in, Sep 21, 2003.

1. ### sandy_pt_inGuest

How to mulitply two integer numbers using bitwise operators in C

sandy_pt_in, Sep 21, 2003

2. ### AggroGuest

You do know how to sum them, right? Well check this out:

3*4 == 3+3+3+3

3*4 == 4+4+4

Aggro, Sep 21, 2003

3. ### osmiumGuest

Emulate the way you learned to do it for decimal numbers in elementary
school.

osmium, Sep 21, 2003
4. ### Nick AustinGuest

Well that's the easy bit. However + is not a bitwise operator.

Adding using only the bitwise operators is the hard bit of
this problem.

Nick.

Nick Austin, Sep 21, 2003
5. ### SlartibartfastGuest

Think about how you would do long multiplication in binary.

Slartibartfast, Sep 22, 2003
6. ### Thomas MatthewsGuest

Can the addition operator be used?

bitwise operator.

--
Thomas Matthews

C++ newsgroup welcome message:
http://www.slack.net/~shiva/welcome.txt
C++ Faq: http://www.parashift.com/c++-faq-lite
C Faq: http://www.eskimo.com/~scs/c-faq/top.html
alt.comp.lang.learn.c-c++ faq:
http://www.raos.demon.uk/acllc-c++/faq.html
Other sites:
http://www.josuttis.com -- C++ STL Library book

Thomas Matthews, Sep 22, 2003
7. ### SlartibartfastGuest

....but it is easy to implement in terms of bitwise operators, as long as you remember the truth table for the full adder.

Slartibartfast, Sep 22, 2003
8. ### Micah CowanGuest

....but the OP reeks of homework...

Micah Cowan, Sep 22, 2003
9. ### sandy_pt_inGuest

Condition was to use only bitwise operators. Eventhough can you tell
me that method you know, using add operation.I will scratch my head to
get somthing out of it.

sandy_pt_in, Sep 23, 2003
10. ### LibraryUserGuest

LibraryUser, Sep 23, 2003
11. ### osmiumGuest

<I can't make sense of the attributions, so I snipped them. I suspect there
is one person using two identities.>
A full adder has three inputs: addend, augend and carry in and two outputs:
sum and carry out. Carry in is 0 for the rightmost bit. Make a truth
table and note that the exclusive or is very useful.

osmium, Sep 23, 2003
12. ### Morris DoveyGuest

Addition can be viewed as a sequence of bitwise operations.
Exclusive or-ing the addend and augend yields all of the partial
sum bits; while and-ing the addend and augend yields all of the
carry bits. Shift the carry bits left one position.

Put the partial sum in the addend.

If there are no 1's in the carry bits, then you're done and the

Otherwise put the carry bits in the augend and repeat.

There are other ways to get the job done; but this is the easiest
to describe. 8^)

It's fairly easy to back into subtraction by negating and adding;
and a (very) simplistic multiplication can be implemented using
the product and addition of -1 to the other factor.

Division can be done as a bitwise successive approximation; but
requires development of a bitwise magnitude comparison (left as
an exercise for the student

Morris Dovey, Sep 23, 2003
13. ### SlartibartfastGuest

That's why I didn't say any more. I'm in a good mood so I don't mind
giving a general hint.

Slartibartfast, Sep 23, 2003