C ++模数乘以2的表现

时间:2013-11-27 21:45:51

标签: c++ performance modulus

我想知道当通过2运算执行整数模数时,典型编译器的程序集减少是什么:

const char* integer_string = "300"; // avoid compiler optimization
int i = atoi(integer_string);
int b = i % 2; // the line in question

我想编译器可以把它变成一个逐位操作来检查最后一位(1s位置),但是它会这样做吗?

1 个答案:

答案 0 :(得分:8)

这个问题只在特定的编译器,平台,优化选项等环境中才有意义。

我的编译器(gcc 4.7.2上的x86_64)会在启用-O3优化时执行此操作:

    andl    $1, %esi