C++模数乘以2的性能

C++ modulus by 2 performance

本文关键字:性能 C++      更新时间:2023-10-16

我想知道当执行整数模2运算时,典型的编译器的汇编缩减会是什么,比如:

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

我想编译器可以把它变成一个逐位操作,只检查最后一位(1位),但它能做到吗?

这个问题只有在特定编译器、平台、优化选项等的上下文中才有意义。

-O3优化打开时,我的编译器(x86_64上的gcc 4.7.2)会执行此操作:

    andl    $1, %esi