I am working through a problem which I was able to solve, all but for the last piece—I am not sure how one can do multiplication using bitwise operators:
0*8 = 0
1*8 = 8
2*8 = 16
3*8 = 24
4*8 = 32
Is there an approach to solve this?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
To multiply by any value of 2 to the power of N (i.e., 2^N), shift the bits N times to the left.
etc..
To divide, shift the bits to the right.
The bits are whole 1 or 0 – you can’t shift by a part of a bit, thus if the number you’re multiplying by is does not factor a whole value of N.
I.e.,
Thus to multiply by 17, you have to do a 4 bit shift to the left, and then add the original number again:
I.e.,
Charles Petzold has written a fantastic book ‘Code’ that will explain all of this and more in the easiest of ways. I thoroughly recommend this.