Computer >> Máy Tính >  >> Lập trình >> C ++

Các chức năng nội bộ của trình biên dịch GCC trong C ++

Trong trình biên dịch GCC có một số chức năng nội trang. Các chức năng này giống như bên dưới.

Hàm _builtin_popcount (x)

Hàm nội trang này được sử dụng để đếm số lượng 1 trong dữ liệu kiểu số nguyên. Hãy để chúng tôi xem một ví dụ về hàm _builtin_popcount ().

Ví dụ

#include<iostream>
using namespace std;
int main() {
   int n = 13; //The binary is 1101
   cout << "Count of 1s in binary of "<< n <<" is " << __builtin_popcount(n);
   return 0;
}

Đầu ra

Count of 1s in binary of 13 is 3

Hàm _builtin_parity (x)

Hàm nội trang này được sử dụng để kiểm tra tính chẵn lẻ của một số. Nếu số có chẵn lẻ, nó sẽ trả về true, ngược lại nó sẽ trả về false. Hãy để chúng tôi xem một ví dụ về hàm _builtin_parity ().

Ví dụ

#include<iostream>
using namespace std;
int main() {
   int n = 13; //The binary is 1101
   cout << "Parity of "<< n <<" is " << __builtin_parity(n);
   return 0;
}

Đầu ra

Parity of 13 is 1

Hàm _builtin_clz (x)

Hàm nội trang này được sử dụng để đếm các số không đứng đầu của một số nguyên. Clz là viết tắt của Bá tước Dẫn đầu Zeros. Hãy để chúng tôi xem một ví dụ về hàm _builtin_clz ().

Ví dụ

#include<iostream>
using namespace std;
int main() {
   int n = 13; //The binary is 1101
   //0000 0000 0000 0000 0000 0000 0000 1101 (32bit integer )
   cout << "Leading zero count of "<< n <<" is " << __builtin_clz(n);
   return 0;
}

Đầu ra

Leading zero count of 13 is 28

Hàm _builtin_ctz (x)

Hàm nội trang này được sử dụng để đếm các số không ở cuối của một số nguyên. Ctz là viết tắt của Count Trailing Zeros. Hãy để chúng tôi xem một ví dụ về hàm _builtin_ctz ().

Ví dụ

#include<iostream>
using namespace std;
int main() {
   int n = 12; //The binary is 1100
   //0000 0000 0000 0000 0000 0000 0000 1100 (32bit integer )
   cout << "Trailing zero count of "<< n <<" is " << __builtin_ctz(n);
   return 0;
}

Đầu ra

Trailing zero count of 12 is 2