计算一个二进制数中数字“1”的个数(位运算)
生活随笔
收集整理的這篇文章主要介紹了
计算一个二进制数中数字“1”的个数(位运算)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
int numberOfOne( unsigned value )
{int count;for( count = 0; value != 0; value >>= 1 )if( ( value & 1 ) != 0 )//如果最低位是1,就增加計數器的值count += 1;return count;
}
value >>= 1 即 value = value >> 1;
賦值運算右邊的 value >> 1 意思是把無符號數value進行向右1位的邏輯移位,然后再賦值給左邊的value。
假設value原來等于10010110,則向右移1位后變成01001011。
這樣把 value >>=1 作為 for 循環的調整語句,即可依次把每個數字都放到最低位上去進行運算。 value & 1 即把 value 和 1 進行AND操作,如果兩個個位都是1,結果為1,否則結果為0。
這樣就可以很快捷的檢驗每次位移后的數字的最后一位是否為1,如果是1,則結果為1,否則結果為0。
筆記:
賦值運算右邊的 value >> 1 意思是把無符號數value進行向右1位的邏輯移位,然后再賦值給左邊的value。
假設value原來等于10010110,則向右移1位后變成01001011。
這樣把 value >>=1 作為 for 循環的調整語句,即可依次把每個數字都放到最低位上去進行運算。
這樣就可以很快捷的檢驗每次位移后的數字的最后一位是否為1,如果是1,則結果為1,否則結果為0。
轉載于:https://www.cnblogs.com/yuzilan/p/10626162.html
總結
以上是生活随笔為你收集整理的计算一个二进制数中数字“1”的个数(位运算)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何正确选择开源数据库?你需要这的5个技
- 下一篇: unittest多线程生成报告-----