ในคอมไพเลอร์ GCC มีฟังก์ชันในตัว ฟังก์ชันเหล่านี้มีลักษณะดังนี้
ฟังก์ชัน _builtin_popcount(x)
ฟังก์ชันบิวด์อินนี้ใช้เพื่อนับจำนวน 1 วินาทีในข้อมูลประเภทจำนวนเต็ม ให้เราดูตัวอย่างของฟังก์ชัน _builtin_popcount()
ตัวอย่าง
#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; }
ผลลัพธ์
Count of 1s in binary of 13 is 3
ฟังก์ชัน _builtin_parity(x)
ฟังก์ชันในตัวนี้ใช้เพื่อตรวจสอบความเท่าเทียมกันของตัวเลข หากตัวเลขมีความเท่าเทียมกันแบบคี่ จะส่งกลับค่า จริง มิฉะนั้น จะส่งกลับค่าเท็จ ให้เราดูตัวอย่างของฟังก์ชัน _builtin_parity()
ตัวอย่าง
#include<iostream> using namespace std; int main() { int n = 13; //The binary is 1101 cout << "Parity of "<< n <<" is " << __builtin_parity(n); return 0; }
ผลลัพธ์
Parity of 13 is 1
ฟังก์ชัน _builtin_clz(x)
ฟังก์ชันบิวด์อินนี้ใช้เพื่อนับเลขศูนย์นำหน้าของจำนวนเต็ม clz ย่อมาจาก Count Leading Zeros ให้เราดูตัวอย่างของฟังก์ชัน _builtin_clz()
ตัวอย่าง
#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; }
ผลลัพธ์
Leading zero count of 13 is 28
ฟังก์ชัน _builtin_ctz(x)
ฟังก์ชันบิวด์อินนี้ใช้เพื่อนับเลขศูนย์ต่อท้ายของจำนวนเต็ม ctz ย่อมาจาก Count Trailing Zeros ให้เราดูตัวอย่างของฟังก์ชัน _builtin_ctz()
ตัวอย่าง
#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; }
ผลลัพธ์
Trailing zero count of 12 is 2