找出二進位制數中bit為1的最(高 低)索引

2022-07-17 05:12:11 字數 1097 閱讀 7388

題1.  給定乙個無符號整型資料(unsigned int),找出其對應二進位制資料中bit位為1的最高/低索引。

比如:對於資料0,返回0;資料1,返回1;資料0x80000000,返回32;

題2.  給定乙個無符號64bit整型資料(unsigned long long int),找出其對應二進位制資料中bit位為1的最高/低索引。

比如:對於資料0,返回0;資料1,返回1;資料0x4000000000000000,返回63;  

題3.  給定乙個無符號長整型資料(unsigned long int),找出其對應二進位制資料中bit位為1的最高/低索引。

>對於題1:

/*

方法一:二分法

*/int fls(unsigned int

x)

if(!(x&0xff000000u

))

if(!(x&0xf0000000ul

))

if(!(x&0xc0000000ul

))

if(!(x&0x80000000ul

))

returnr;}

/*

方法二:遍曆法

*/

int fls(unsigned int x)

return pos;

}

>對於題2:

unsigned long long int為64bit資料,借助題1實現

int fls_64(unsigned long

long

intx)

>對於題3:

由於unsigned long int型別的size會根據編譯器的不同而不同,所以應該考慮無符號長整型為8byte和4byte的情況。總和題1/2

int

fls_long(unsigned long int x)

python二進位制數加1 二進位制中為1的位數

二進位制中為1的位數 題目要求 給定乙個整數,請計算二進位制中為1的位數 輸入 13 輸出 3 解釋 13的二進位制表示是 1101,位為1的數量是3 思路分析 如果乙個數是奇數,那麼它的二進位制的最後一位一定是1,道理很簡單,其他的位都表示2n 只有最後一位表示20 我們可以利用最後一位是否為1來...

二進位制 二進位制中1的個數

題目 請實現乙個函式,輸入乙個整數,輸出該數二進位制表示中 1 的個數。例如,把 9 表示成二進位制是 1001,有 2 位是 1。因此,如果輸入 9,則該函式輸出 2。示例 1 輸入 00000000000000000000000000001011 輸出 3 解釋 輸入的二進位制串 0000000...

二進位制數中1的個數

輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。思路 在平時的學習中感受不到位運算的精妙,但是在一些演算法處理和效率問題上位運算卻提供了很好的解決方法,畢竟它是立足於二進位制來處理資料的,最底層的也是效率最高的。本題的考察重點也是位運算。通過運算 與運算,每次迴圈 n n n 1 ...