purely use bit shift, add and deduction