c code | Sololearn: Learn to code for FREE!
New course! Every coder should learn Generative AI!
Try a free lesson
0

c code

C program for binary multiplication/division using bitwise operator If anyone who knows just give me some idea.

29th Oct 2018, 9:07 AM
Dhiviya Thirumavalavan
Dhiviya Thirumavalavan - avatar
2 Answers
+ 2
simple one is x<<1 // x*2 and x>>1 // x/2 and its only work with 2. if you want more complex one it's same as normal multiplication 0010 //2 0110 //6 ______ 0000 0010 0010 0000 _________ 0001100 //12
29th Oct 2018, 10:10 AM
Taste
Taste - avatar
0
Supposing that: - You talking about operations between integers (and not floats) - You take cure of use correct representation of negative integers (like popular complement two) - you know how implement an adder in binary try to think about how you learned multiplication to school.. Starting with multiplication (base 10): 22 x 13 = 22 x (10+3) = (22x10) + (22x3) = 220 + 66 = 286 and in base 2: 10110 x 1101 = 10110 x (1000 + 100 + 1) = 10110 x (1<<3 + 1<<2 + 1) = (10110 x 1)<<3 + (10110 x 1) <<2 + 10110 = (10110<<3) + (10110<<2) + 10110 = 10110000 + 1011000 + 10110 = 1011 0000+ 101 1000 + = 1 0000 1000+ 1 0110 = 1 0110= -------------------------------------- 1 0001 1110 That in decimal is 286 like wanted. Take note that using left shift x<<n mean effectivly x*2^n. For division you can use repeated subtractions method like: Operation: 19 / 3 res = 0 19 - 3 = 16 (res=1) 16-3= 13 (res=2) 13- 3= 10 (res=3) 10 - 3= 7 (res=4) 7 - 3= 4 (res=5) 4 - 3= 1 (res=6) at this point 1 < 3 then you have to stop. Result is obtained by using a var (res in example) that count how many division you made Obliviously these are VERY BASIC algorithms (exist much more complex ones) but i think that is enough for you
29th Oct 2018, 10:58 AM
KrOW
KrOW - avatar