Give a fast way to multiply a number by 7
Answers were Sorted based on User's Feedback
Answer / anu
Both answers have slight mistakes in them.
x *7 = ( x<<3 ) - x , which is equivalent to (x* 8 ) -x
Is This Answer Correct ? | 65 Yes | 6 No |
Answer / rajan
ANU is right the answer is x<<3 -x
when you left shift any number by 1 it is equivalent to
multiplying with 2.
so, left shift by 3 means ur are multiplying with 8.
and x*7 = x(8-1) = x*8-x = x<<3-x .
Is This Answer Correct ? | 31 Yes | 5 No |
Answer / anonymous
The easiest way is to relate the number to be multiplied
by, to a power of 2. Then a corresponding number of left
shifts to that power with an addition or subtraction would
give the desired result.
In this case, 7 can be written as 2^3 - 1 or 8 - 1.
Therefore, shift the number to the left thrice which would
multiply it by 8. Then subtract the original. You can also
do this as
4 + 2 + 1 = 2^2 + 2^1 + 1
Is This Answer Correct ? | 20 Yes | 6 No |
Answer / pratik chopra
Yes this can be made generic;
Approach: 7*x=(8-1)*x= 8*x-1*x=x<<3-x
If 6*x=(4+2)x=4*x+2*x=x<<2+x<<1
If 13*x=(16-2-1)x=(x<<4-x<<1-x)
Is This Answer Correct ? | 8 Yes | 0 No |
Answer / pratik chopra
It is very obvious above condition will not work if output
after multiplying by 7 is not 8 bit. In that case, if you
consider 64*7=448 which is 111000000 and a 9bit number.
Thus, there is an overflow. Even a normal decimal
calculation, restricted to 8 bit will not give a right answer.
In other words, any n-bit number whose multiplication with 7
is an n-bit number, the above solution will work otherwise,
overflow will occur.
For 8 bit no. max x<=(255/7)<=36.
Is This Answer Correct ? | 7 Yes | 1 No |
Answer / pathfinder
it shall be
n*7 = (n << 3) - n as already have been suggested by some ppl.
Is This Answer Correct ? | 7 Yes | 3 No |
Answer / rupesh
There is a problem with
x=(x<<3)-x;
Suppose that x is stored in 8 bit format.
If x = 64, i.e. 2^6, then this won't work.
In general, if x is n-bit, and value of x > 2^(n-3), then
this won't work.
Is This Answer Correct ? | 4 Yes | 2 No |
Can we write a program without main() function?
How can you allocate arrays or structures bigger than 64K?
What is use of null pointer in c?
What is the purpose of scanf() and printf() functions?
What is typedf?
Is python a c language?
Explain the difference between #include "..." And #include <...> In c?
What is the use of pointers in C?
0 Answers Impetus, Motorola, Tavant Technologies, Virtusa,
Explain what is the difference between functions abs() and fabs()?
write a progrmm in c language take user interface generate table using for loop?
why program counter is 16 bit?
What is time complexity c?