VC++中的优化

来源:百度知道 编辑:UC知道 时间:2024/05/25 14:06:33
a*9可用(a<<3)+a a乘9 怎么能用(a<<3)+a 表示 请问下(a<<3)+a是什么意思

移位操作是位操作运算符,以二进制的方式处理数。左移也就是将所有位都顺次左移,右边补零,如1101 << 2 变为110100 。不考虑溢出的话每左移一位数就会变大2倍,因为是二进制。就像10进制中每左移一位变大10倍一样。
左移N位就是扩大 进位制的N次方倍。所以a<<3 等同于a×8。

这种优化方式很常用。移动操作我加法操作相当快。而乘操作与之相比就慢多了(乘操作是由多个移位和加法操作实现的)。

意思是a左移三位然后再与a相加
如果不考虑溢出的情况,每当a左移一位相当于a扩大了两移位之前的两倍,如果左称两位就相当于扩大了移位之前的4倍,以此类推,如果a左移n位的结果为a = a * 2的n次方.
代入上面的式子,(a<<3) +a 也就相当于 (a*2的3次方) +a 也就相当于(a*8)+a,也就相当于a*9了.
不知道你看清楚没有.