Builtin function

发现 Builtin function 可以用来计算十进制数中1的个数;返回1的个数是奇数还是偶数;返回开头0的个数;返回结尾0的个数。

参考链接:

// C program to illustrate _builtin_popcount(x) 

#include <stdio.h> 
int main() 
{ 
    int n = 5; 
    printf("Count of 1s in binary of %d is %d ", 
        n, __builtin_popcount(n)); 
    return 0; 
} 

// C program to illustrate _builtin_parity(x) 

#include <stdio.h> 
int main() 
{ 
    int n = 7; 
    printf("Parity of %d is %d ", 
        n, __builtin_parity(n)); 
    return 0; 
} 

第二个函数 _builtin_parity(x) 是用来计算:x中1的个数是奇数个则返回1,否则返回0.

// C program to illustrate __builtin_clz(x) 
#include <stdio.h> 
int main() 
{ 
    int n = 16; 
    printf("Count of leading zeros before 1 in %d is %d", 
        n, __builtin_clz(n)); 
    return 0; 
} 

// C program to illustrate __builtin_ctz(x) 
#include <stdio.h> 
int main() 
{ 
    int n = 16; 
    printf("Count of zeros from last to first "
        "occurrence of one is %d", 
        __builtin_ctz(n)); 
    return 0; 
} 

// C program to illustrate builtin functions of 
// GCC compiler 
#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 
    int num = 4; 
    int clz = 0; 
    int ctz = 0; 
    int pop = 0; 
    int parity = 0; 

    pop = __builtin_popcount(num); 
    printf("Number of one's in %d is %d\n", num, pop); 

    parity = __builtin_parity(num); 
    printf("Parity of %d is %d\n", num, parity); 

    clz = __builtin_clz(num); 
    printf("Number of leading zero's in %d is %d\n", num, clz); 

    // It only works for unsigned values 
    clz = __builtin_clz(-num); 
    printf("Number of leading zero's in %d is %d\n", -num, clz); 

    ctz = __builtin_ctz(num); 
    printf("Number of trailing zero's in %d is %d\n", num, ctz); 

    return 0; 
} 

猜你喜欢

转载自www.cnblogs.com/Bella2017/p/11282035.html