-2
我有以下函數,女巫得到一個整數(十進制數),並將其轉換爲二進制數後返回該整數的個數(例如,如果我們傳遞6,函數將返回2,因爲十進制中的6等於110二進制)。 這很好,但不幸的是我不明白它是如何工作的。代碼是:複雜的c代碼,我需要任何解釋它是如何工作的?
int number_of_ones(int i){
i = i - ((i >> 1) & 0x55555555);
i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
return (((i + (i >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24;
}
有沒有人可以向我解釋它是如何工作的?