__builtin_ctz( ) / __buitlin_ctzll( )
用法:返回括号内数的二进制表示形式中末尾0的个数。
cout<<__builtin_ctz(ksm(2, 10))<<endl; // 10
cout<<__builtin_ctzll(ksm(2, 10))<<endl; // 10
//ll表示longlong, 第一个最多能达到2的32位,第二个最多2的64位
//用这个函数可以表示数的质因数中有多少个2
__builtin_ctz( 6 ) 6:110
末尾有1个0, 6 = 2*3, 质因数分解有1个2
__buitlin_clz( ) / __buitlin_clzll( )
用法:返回括号内数的二进制表示形式中前导0的个数。
cout<<__builtin_clz(63); //26
cout<<__builtin_clzll(63)<<endl; //58(long long是64位, 前导零更多)
__builtin_popcount( )
用法:返回括号内数的二进制表示形式中1的个数。
__builtin_parity( )
用法:返回括号内数的二进制表示形式中1的个数的奇偶性(偶:0,奇:1)。
__builtin_ffs( )
用法:返回括号内数的二进制表示形式中最后一个1在第几位(从后往前)。
__builtin_sqrt( )
用法:快速开平方。
__builtin_sqrtf( )
用法:快速开平方。
__builtin_sqrt( ) :8位
__builtin_sqrtf( ) :4位
标签:__,函数,二进制,用法,括号,builtin,内数 From: https://www.cnblogs.com/geniusgenius/p/16797994.html