title: Karatsuba algorithm v.s. "*" operator?
body: <p>Today, I heard of Karatsuba algorithm, a fast multiplication algorithm. I am curious that in which sense does this "fast" mean?</p>
  
  <p>Normally, we consider a multiplication operation using * operator as O(1) when calculating the time complexity of a piece of code, and if it's always true, how come we have a faster algorithm with regard to asymptotic notation? Or * should not be considered O(1) when performed on very large numbers, where Karatsuba algorithm can be useful?</p>
  
  <p>And in the machine level, compilers always do some optimization on *. For example, using bit-wise operations to multiply a number by 2^n. Does Karatsuba algorithm beat * in the actual running time? </p>