Open In App
Related Articles

Builtin functions of GCC compiler

Improve Article
Improve
Save Article
Save
Like Article
Like

These are four important built-in functions in GCC compiler: 

1. __builtin_popcount(x)

 This function is used to count the number of one’s(set bits) in an integer. 
Example: 

if x = 4
binary value of 4 is 100
Output: No of ones is 1.

C




// 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++




// C++ program to illustrate _builtin_popcount(x)
 
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    int n = 5;
    cout << "Count of 1s in binary of " << n << " is " << __builtin_popcount(n);
    return 0;
}


Output

Count of 1s in binary of 5 is 2 

Time complexity : O(log2(n))
Auxiliary Space: O(1)

Note: Similarly you can use __builtin_popcountl(x) & __builtin_popcountll(x) for long and long long data types.

2 . __builtin_parity(x)

This function is used to check the parity of a number. This function returns true(1) if the number has odd parity else it returns false(0) for even parity. 
Example: 

if x = 7
7 has odd no. of 1's in its binary(111).
Output: Parity of 7 is 1 

C




// 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;
}


C++




// C++ program to illustrate _builtin_parity(x)
 
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    int n = 7;
    cout << "Parity of " << n << " is " << __builtin_parity(n);
    return 0;
}


Output

Parity of 7 is 1 

Time complexity : O(log2(n))
Auxiliary Space: O(1)

Note: Similarly you can use __builtin_parityl(x) & __builtin_parityll(x) for long and long long data types.

3.__builtin_clz(x)

This function is used to count the leading zeros of the integer. Note : clz = count leading zero’s. 
Example: It counts number of zeros before the first occurrence of one(set bit). 

a = 16
Binary form of 16 is 00000000 00000000 00000000 00010000
Output: 27

C




// 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++




// C++ program to illustrate __builtin_clz(x)
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    int n = 16;
    cout<<"Count of leading zeros before 1 in "<< n <<" is "<<__builtin_clz(n);
    return 0;
}


Output

Count of leading zeros before 1 in 16 is 27

Time complexity : O(log2(n))
Auxiliary Space: O(1)
Note: __builtin_clz(x) This function only accept unsigned values 
Note: Similarly you can use __builtin_clzl(x) & __builtin_clzll(x) for long and long long data types.

4.__builtin_ctz(x)

This function is used to count the trailing zeros of the given integer. Note : ctz = count trailing zeros. 
Example: Count no of zeros from last to first occurrence of one(set bit). 

a = 16
Binary form of 16 is 00000000 00000000 00000000 00010000
Output: ctz = 4

C




// 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++




// C++ program to illustrate __builtin_ctz(x)
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    int n = 16;
    cout<<"Count of zeros from last to first occurrence of one is  "<< __builtin_ctz(n);
    return 0;
}


Output

Count of zeros from last to first occurrence of one is 4

Time complexity : O(log2(n))
Auxiliary Space: O(1)
Note: Similarly you can use __builtin_ctzl(x) & __builtin_ctzll(x) for long and long long data types.


Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!

Last Updated : 30 Jan, 2023
Like Article
Save Article
Previous
Next
Similar Reads
Complete Tutorials