472,145 Members | 1,444 Online

# how to multiply two integers using bitwise operators

How to mulitply two integer numbers using bitwise operators in C
Nov 13 '05 #1
12 18470
<sa*********@yahoo.com> wrote :
How to mulitply two integer numbers using bitwise operators in C

Emulate the way you learned to do it for decimal numbers in elementary
school.
Nov 13 '05 #2
sa*********@yahoo.com wrote:
How to mulitply two integer numbers using bitwise operators in C

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

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

3*4 == 4+4+4

Nov 13 '05 #3
On Sun, 21 Sep 2003 14:03:51 GMT, Aggro <sp**********@yahoo.com>
wrote:
sa*********@yahoo.com wrote:
How to mulitply two integer numbers using bitwise operators in C

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

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

3*4 == 4+4+4

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.

Nov 13 '05 #4
<sa*********@yahoo.com> wrote in message news:7c**************************@posting.google.c om...
How to mulitply two integer numbers using bitwise operators in C

Think about how you would do long multiplication in binary.

--
#include <stdio.h>
char*f="#include <stdio.h>%cchar*f=%c%s%c;%cint main(void){printf(f,10,34,f,34,10,10);return 0;}%c";
int main(void){printf(f,10,34,f,34,10,10);return 0;}
Nov 13 '05 #5
sa*********@yahoo.com wrote:
How to mulitply two integer numbers using bitwise operators in C

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

Nov 13 '05 #6
"Thomas Matthews" <Th**********************@sbcglobal.net> wrote in message news:YvEbb.728
but adding is not a bitwise operator.

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

--
#include <stdio.h>
char*f="#include <stdio.h>%cchar*f=%c%s%c;%cint main(void){printf(f,10,34,f,34,10,10);return 0;}%c";
int main(void){printf(f,10,34,f,34,10,10);return 0;}
Nov 13 '05 #7
"Slartibartfast" <sl******@thhgttg.net> writes:
"Thomas Matthews" <Th**********************@sbcglobal.net> wrote in message news:YvEbb.728
but adding is not a bitwise operator.

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

....but the OP reeks of homework...
Nov 13 '05 #8
Thomas Matthews <Th**********************@sbcglobal.net> wrote in message news:<Yv***************@newssvr16.news.prodigy.com >...
sa*********@yahoo.com wrote:
How to mulitply two integer numbers using bitwise operators in C

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

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.
Nov 13 '05 #9
<I can't make sense of the attributions, so I snipped them. I suspect there
is one person using two identities.>
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.

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.
Nov 13 '05 #10
osmium wrote:
.... snip ...
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.

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.

--
Replies should be to the newsgroup
Chuck Falconer, on vacation.
Nov 13 '05 #11
sa*********@yahoo.com wrote:
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.

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
West Des Moines, Iowa USA

Nov 13 '05 #12
Micah Cowan <mi***@cowan.name> wrote in message news:<m3************@localhost.localdomain>...
"Slartibartfast" <sl******@thhgttg.net> writes:
"Thomas Matthews" <Th**********************@sbcglobal.net> wrote in message news:YvEbb.728
but adding is not a bitwise operator.

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

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

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

### This discussion thread is closed

Replies have been disabled for this discussion.