恭喜,你发布的帖子
发布于 2022-11-30 11:02:22
21楼
相邻位相加:
a =( a & 0x55555555) + ((a & 0xAAAAAAAA)>>1);
相加之后, 每2个bit存储该2bit的1的个数;
继续,相邻两位相加:
a = (a & 0x33333333) + ((a & 0xCCCCCCCC) >> 2);
4位
a = (a & 0F0F0F0F) + ((a & 0xF0F0F0F0) >> 4)
8位
a = (a & 0x00FF00FF) + ((a & 0xFF00FF00) >> 8)
16位:
a = (a & 0000FFFF) + ((a & FFFF0000) >> 16)
此时, a的值就是一个32位整数的1的个数;
请填写推广理由:
分享
只看
楼主