比賽小技巧(1)

Aexindas發表於2024-05-07

二進位制操作

C++中存在一些關於二進位制位的操作

返回a和b的最大公約數

int a=6,b=9;
__gcd(a,b);

輸出結果為

print("3");

返回二進位制位中1的個數

int a=6;
__builtin_popcount(a);

輸出結果為

print("6")

輸出從右往左第一個有效位的位置(最低有效位)

int a=6;
__builtin_ffs(a);

輸出結果為

print("2");

輸出該型別所佔位元數位數減去a所佔有的有效位數

int a=6;
__builtin_clz(a);

輸出結果為

print("29");

最後一個有效二進位制(即“1”)後面的0的個數

int a=6;
__builtin_ctz(a);

輸出結果為

print("1");