Kehitin tavan laskea plus- ja kertolaskuja bittisiirrolla ja loogisilla operaattoreilla.
Tapa saattaa olla käytössä muuallakin, sillä se on niin ilmiselvä.
koodi
#include<iostream.h> template<class c>c p(c a,c b){return a&b?p(a^b,(a&b)<<1):a^b;} template<class c>c m(c a,c b){ c res=0,offset=0; while(b){ if(b&1)res=p(res,a<<offset); b>>=1;offset=p(offset,(c)1);} return res; } main() { int a,b; cout<<"Give numbers to be multiplied:\n"; cin>>a>>b; cout<<"Result is "<<m(a,b)<<".\n"; }
Aihe on jo aika vanha, joten et voi enää vastata siihen.