函数

__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位

posted @ 2022-10-17 09:29  每日一题,医生远离  阅读(52)  评论(0)    收藏  举报