C++函数__lg()和log2()都是用于计算以2为底的对数的函数,但它们有些地方是不同的。
__lg()函数是一个非标准的函数,只在部分编译器中支持,它返回一个整数值,表示输入参数的二进制表示中最高位1的位置(从0开始计数)。
例如,__lg(8)将返回3,因为8的二进制表示是1000,最高位1在第3位。
log2()函数是C++11标准中提供的函数,它返回一个浮点数值,表示以2为底的对数。
例如,log2(8)将返回3.0,因为8等于2的3次方。
它们的返回值类型不同,前者返回整数,后者返回浮点数。
另外,__lg()是非标准函数,只在部分编译器中支持,而log2()是C++11标准库中的函数,在大部分编译器中都可以使用。