1. 程式人生 > >如何一求個整數的二進位制數中1的個數

如何一求個整數的二進位制數中1的個數

1、使用位移

        while (temp>0) {
            if ( (temp & 1) == 1 ) {
                //temp & 1如果re最低位是1,則結果等於1
                //TODO
            }
            temp = temp >> 1;//向右移位
        }

2、使用 &

    while(temp) {
        //TODO 計數器+1
        temp &= (temp - 1);
    }

temp &= (temp - 1)將 temp 的二進位制表達中最右邊的1(包括1)後面的位變成0;

ex:
temp     = 01001000
temp - 1 = 01000111
temp & (temp - 1) = 01000000