__builtin_popcount(x): 返回x的二进制表示中1的个数。
__builtin_clz(x): 返回x的二进制表示中从最高位开始连续0的个数,如果x的值为0,则返回所在类型的位宽。
__builtin_ctz(x): 返回x的二进制表示中从最低位开始连续0的个数,如果x的值为0,则返回所在类型的位宽。
__builtin_parity(x): 返回x的二进制表示中1的个数是否为奇数,是则返回1,否则返回0。
__builtin_bswap16(x): 将x的二进制表示中的16位进行字节交换。
unsigned short x = 0xaabb;
unsigned short y = __builtin_bswap16(x); // y的值为0xbbaa
__builtin_bswap32(x): 将x的二进制表示中的32位进行字节交换。
unsigned int x = 0xaabbccddu;
unsigned int y = __builtin_bswap32(x); // y的值为0xddccbbaa
__builtin_bswap64(x): 将x的二进制表示中的64位进行字节交换。