計算數組的二進制表示的01個數

以下是自寫的一個比較簡單的計算二進制中1的個數及其起始和終止位置的程序,這個程序可擴展成對一個數組的計算。
  1. /*
  2. *CaculateOnes.cpp
  3. *Powered by Keamou
  4. */
  5. #include <iostream.h>
  6. int start;
  7. int end;
  8. int ones;
  9. void main()
  10. {
  11.     char obj[2]={'d','a'};
  12.     char temp = 1;
  13.     int objlenth;
  14.     int lenth;
  15.     int num;
  16.     num = 2;
  17.     lenth = 8;
  18.     objlenth=lenth*num;
  19.     //////////////////////////////////////////////////////////////////////////
  20.     //顯示01串
  21.     //////////////////////////////////////////////////////////////////////////
  22.     for (int i=0;i<objlenth;i++)
  23.     {
  24.         if ((obj[i/lenth]&(temp<<(i%lenth)))==0)
  25.         {
  26.             cout<<"1";
  27.         }
  28.         else
  29.         {
  30.             cout<<"0";
  31.         };
  32.     }
  33.     cout<<endl;
  34.     //////////////////////////////////////////////////////////////////////////
  35.     //以下是計算上述01串中的1序列
  36.     //
  37.     //通過位操作來讀取01值
  38.     //////////////////////////////////////////////////////////////////////////
  39.     for (i=0;i<objlenth;i++)
  40.     {
  41.         if ((obj[i/lenth]&(temp<<(i%lenth)))==0)
  42.         {
  43.             start=i;
  44.             ones=0;
  45.             do
  46.             {
  47.                 ones++;
  48.                 i++;
  49.             }while ((obj[i/lenth]&(temp<<(i%lenth)))==0 && i<objlenth);
  50.             end=i-1;
  51.             cout<<"start:/t"<<start<<"/tend:/t"<<end<<"/tlenth:/t"<<ones<<endl;
  52.         }
  53.     }
  54.     cout<<endl;
  55.     
  56. }
發佈了27 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章