# How can we perfom multiplication programatically without using + or * operator.

Discussion in 'C Programming' started by mjdeesh_hi@yahoo.co.in, May 29, 2006.

1. ### Guest

How can we perfom multiplication programatically without using + or *
operator.
Can any one help out in this one.

, May 29, 2006

2. ### santoshGuest

wrote:
> How can we perfom multiplication programatically without using + or *
> operator.
> Can any one help out in this one.

If you conceptualise the numerical values in a binary format, then left
shifting the value by N is similar to multiplying the value by 2^N.

santosh, May 29, 2006

3. ### Richard HeathfieldGuest

said:

> How can we perfom multiplication programatically without using + or *
> operator.

Addition can be done by using ^ (xor), & (and), and << (left shift) in the
proper way.

Alternatively, you can double and halve, if you're careful in the case of an
odd number. Note that doubling will require using addition as described
above (since you are not allowed the * operator).

That's enough of a hint - now do your own homework.

--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: rjh at above domain (but drop the www, obviously)

Richard Heathfield, May 29, 2006
4. ### IcoGuest

wrote:
>
> How can we perfom multiplication programatically without using + or *
> operator.
> Can any one help out in this one.
>

#include <stdio.h>

int mult(int a, int b)
{
int c = 0;
while(a--) c -= b;
return -c;
}

int main(void)
{
int a = 5;
int b = 6;

printf("%d x %d = %d\n", a, b, mult(a, b));

return 0;
}

--
:wq
^X^Cy^K^X^C^C^C^C

Ico, May 29, 2006
5. ### Richard HeathfieldGuest

Ico said:

> wrote:
>>
>> How can we perfom multiplication programatically without using + or *
>> operator.
>> Can any one help out in this one.
>>

>
> #include <stdio.h>
>
> int mult(int a, int b)
> {
> int c = 0;
> while(a--) c -= b;
> return -c;
> }

Very funny.

But I suspect his teacher is trying to get him to find out how computers do
addition and multiplication "under the hood" (because a computer does not
have the luxury of a magic wand we call '*').

--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: rjh at above domain (but drop the www, obviously)

Richard Heathfield, May 29, 2006
6. ### newbieGuest

Richard Heathfield wrote:
> Ico said:
>
> > wrote:
> >>
> >> How can we perfom multiplication programatically without using + or *
> >> operator.
> >> Can any one help out in this one.
> >>

> >
> > #include <stdio.h>
> >
> > int mult(int a, int b)
> > {
> > int c = 0;
> > while(a--) c -= b;
> > return -c;
> > }

>
> Very funny.
>
> But I suspect his teacher is trying to get him to find out how computers do
> addition and multiplication "under the hood" (because a computer does not
> have the luxury of a magic wand we call '*').
>
> --
> Richard Heathfield
> "Usenet is a strange place" - dmr 29/7/1999
> http://www.cpax.org.uk
> email: rjh at above domain (but drop the www, obviously)

Hehehehehehe!

Totally irrelevent but I thought your magic wand comment was funny

newbie, May 29, 2006
7. ### santoshGuest

newbie wrote:
> Richard Heathfield wrote:

.... snip ...

> > But I suspect his teacher is trying to get him to find out how computers do
> > addition and multiplication "under the hood" (because a computer does not
> > have the luxury of a magic wand we call '*').

>
> Hehehehehehe!
>
> Totally irrelevent but I thought your magic wand comment was funny

Have you been exposing yourself to nitrous oxide?

santosh, May 29, 2006
8. ### Richard BosGuest

wrote:

> How can we perfom multiplication programatically without using + or *
> operator.

#include <stdio.h>

int main(void)
{
double m1=4.0, m2=5.0;

printf("%f times %f equals %f.\n", m1, m2, m1/(1.0/m2));

return 0;
}

HTH; HAND.

Richard

Richard Bos, May 29, 2006
9. ### IcoGuest

Richard Bos <> wrote:
> wrote:
>
>> How can we perfom multiplication programatically without using + or *
>> operator.

>
> #include <stdio.h>
>
> int main(void)
> {
> double m1=4.0, m2=5.0;
>
> printf("%f times %f equals %f.\n", m1, m2, m1/(1.0/m2));
>
> return 0;
> }

Taking stupid assignments literally, that must be some kind of dutch
humor

--
:wq
^X^Cy^K^X^C^C^C^C

Ico, May 29, 2006
10. ### SM RyanGuest

wrote:
#
#
#
# How can we perfom multiplication programatically without using + or *
# operator.
# Can any one help out in this one.

Any good text on computation theory should include the multiplication

--
SM Ryan http://www.rawbw.com/~wyrmwif/
Mention something out of a Charleton Heston movie, and suddenly
everybody's a theology scholar.

SM Ryan, May 29, 2006
11. ### TomásGuest

posted:

> How can we perfom multiplication programatically without using + or *
> operator.
> Can any one help out in this one.
>

Seems like you need a book on digital electronics and boolean logic.

-Tomás

Tomás, May 29, 2006
12. ### SkarmanderGuest

Re: How can we perfom multiplication programatically without using+ or * operator.

Richard Heathfield wrote:
> Ico said:
>
>> wrote:
>>> How can we perfom multiplication programatically without using + or *
>>> operator.
>>> Can any one help out in this one.
>>>

>> #include <stdio.h>
>>
>> int mult(int a, int b)
>> {
>> int c = 0;
>> while(a--) c -= b;
>> return -c;
>> }

>
> Very funny.
>
> But I suspect his teacher is trying to get him to find out how computers do
> addition and multiplication "under the hood" (because a computer does not
> have the luxury of a magic wand we call '*').
>

For "computer", read "lowest level of computing hardware". That level
usually doesn't have multiplication as a primitive operation. Go any higher
(say, the processor as a whole) and you'll find that most computers do have it.

<musing>
Doing this in C is a silly exercise, by the way, because the assumption that
C's set of primitive operations (minus + and *) closely resembles that of
the hardware is less and less commonly valid (or relevant). This line of
thinking, incidentally, is also what makes people invest in clever bit
tricks when they start prematurely optimizing.

I'd think a good exposition in microcode would be more relevant. Either that
or, if you really think it's relevant that people find a general
multiplication algorithm on their own (why?), a very basic set of operators
and statements with which to do it, but not just "go do it in C without * or +".
</musing>

S.

Skarmander, May 29, 2006