已采纳回答 / SkyFreecss
看来这位童鞋是强迫症犯了。。。你只需要记住相对于二进制数而言的,左移一位,相当于最后一位加一个零,即将数扩大2^1倍,左移n位,即加n个零,扩大2^n次方,然而这仅限于无符号数的运算,有符号数就要考虑高位溢出了。乘法运算是一步一步乘(移位)出来的,每次取乘数的一位与被乘数操作,1则把被乘数照写,0则为0,然后乘数右移。这样循环,最后把每一步结果加起来。所以左移位比乘法效率要高(具体参见<<计算机组成原理>>),你可以在java上写个小程序看看两者的运算时间。
2016-10-12