以下是自写的一个比较简单的计算二进制中1的个数及其起始和终止位置的程序,这个程序可扩展成对一个数组的计算。
- /*
- *CaculateOnes.cpp
- *Powered by Keamou
- */
- #include <iostream.h>
- int start;
- int end;
- int ones;
- void main()
- {
- char obj[2]={'d','a'};
- char temp = 1;
- int objlenth;
- int lenth;
- int num;
- num = 2;
- lenth = 8;
- objlenth=lenth*num;
- //
- //显示01串
- //
- for (int i=0;i<objlenth;i++)
- {
- if ((obj[i/lenth]&(temp<<(i%lenth)))==0)
- {
- cout<<"1";
- }
- else
- {
- cout<<"0";
- };
- }
- cout<<endl;
- //
- //以下是计算上述01串中的1序列
- //
- //通过位操作来读取01值
- //
- for (i=0;i<objlenth;i++)
- {
- if ((obj[i/lenth]&(temp<<(i%lenth)))==0)
- {
- start=i;
- ones=0;
- do
- {
- ones++;
- i++;
- }while ((obj[i/lenth]&(temp<<(i%lenth)))==0 && i<objlenth);
- end=i-1;
- cout<<"start:/t"<<start<<"/tend:/t"<<end<<"/tlenth:/t"<<ones<<endl;
- }
- }
- cout<<endl;
- }