您好,登錄后才能下訂單哦!
#include<iostream> using namespace std; //求二進制中1的個數:對于一個字節(8bit)的變量,要求算法的執行效率盡可能的高 //1,對于二進制,對2求余可得到這一位是0還是1 int count1(int v) { int num=0; while(v) { if(v%2==1) ++num; v=v/2; } return num; } //2.除2可用右移操作,提高效率,判斷一位是否為1可用與來判別 int count2(int v) { int num=0; while(v) { num+=(v&1); v>>=1; } return num; } //這個數是2的整數次冪來判斷 int count3(int v) { int num=0; while(v) { v&=(v-1); ++num; } return num; } //4.分支語句進行判斷:效率低 int count4(int v) { int num=0; switch(v) { case 0: num=0; break; case 1: case 2: case 4: case 8: case 16: case 32: case 64: case 128: num=1; break; case 3: case 6: case 12: //還有別的可能 num=2; break; } return num; } //5.查表法 int countTable[256]={ 0,1,1,2,1,2, }; int count5(int v) { return countTable[v]; } int main() { cout<<count1(3)<<endl; cout<<count2(15)<<endl; cout<<count3(4)<<endl; cout<<count4(128)<<endl; cout<<count5(0)<<endl; return 0; }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。