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 |
which operator is known as dummy operator in c?
Find the O/p of the following 1) #include int main() { char c='1'; int j=atoi(c); }
Can i use “int” data type to store the value 32768? Why?
#define min((a),(b)) ((a)<(b))?(a):(b) main() { int i=0,a[20],*ptr; ptr=a; while(min(ptr++,&a[9])<&a[8]) i=i+1; printf("i=%d\n",i);}
What is a null pointer in c?
What are the similarities between c and c++?
What is the difference between far and near ?
What is uint8 in c?
how can i write a program that prints out a box such that whenever i press any key8(coordinate number) on the keyboard, the box moves.
in a town the percentage of men is 52 the percentage of total literacy is 48 if total percentage of literate men is 35 of the total population write a program to find the total no of the literate men and women if the population of the town is 80000
Why is c used in embedded systems?
Should I learn data structures in c or python?