uint32_t llog2uint32_t n return 31 - __builtin_clzn 1; 分析一下
这是一个求解32位整数n的二进制表示中最高位的位置的函数。具体步骤如下:
1.将n和1按位或运算,保证n为奇数(如果n为偶数,则n的二进制表示中最高位为0,而如果n为奇数,则n的二进制表示中最高位为1)。
2.使用GCC内置函数__builtin_clz(n),返回n的二进制表示中从最高位开始连续的0的个数。
3.用31减去步骤2中返回的值,即可得到n的二进制表示中最高位的位置。
注意,该函数只适用于32位无符号整数。如果需要处理其他类型的数据,需要根据其位数进行相应的修改。
原文地址: https://www.cveoy.top/t/topic/hd8t 著作权归作者所有。请勿转载和采集!