1 __builtin_ctz(x); // 求x的二进制数末尾0的个数 2 __builtin_ctz(0b0100) //2 3 4 __builtin_clz(x); // 求x的二进制数前导0的个数(ps:一共有32位) 5 __builtin_clz(0b0100) //29 6 7 __builtin_popcount(x); // 求x的二进制数中的1的个数 8 __builtin_popcount(0b0100) //1 9 10 __builtin_ffs(x); // 求x的二进制数中最低位1的位置(突然发现和lowbit有一样的作用,但是要比lowbit慢) 11 __builtin_ffs(0b0100) //3 12 13 __builtin_parity(x); // 求x的二进制数中1的个数的奇偶性(奇数为1 偶数为0) 14 __builtin_parity(0b0100) //1
更多builtin函数
https://www.keil.com/support/man/docs/ARMCC/armcc_chr1359125006834.htm