-
如果我有二进制数0111000111111,有什么快速算法可以计算1的数量吗?
-
如果0111000111111是字符串(例如"011100011111"(有什么快速算法可以计算字符串中1的数量吗?
一种相对快速的方法是预计算所有字节值的位计数表,并对(无符号(整数的四个字节求和。
byte NB[256]= { 0, 1, 1, 2, 1, 2, 2, 3, 1, 1, ... };
N= NB[U & 255] + NB[(U >> 8) & 255] + NB[(U >> 16) & 255] + NB[(U >> 24) & 255];
您可以针对每个切片的不同位数进行调整。