程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言問答 >> C語言對數組中的每個元素進行逐bit的'0','1'判斷

C語言對數組中的每個元素進行逐bit的'0','1'判斷

編輯:C語言問答

C語言對數組中的每個元素進行逐bit的'0','1'判斷

我想編個程序對數組ch中的每個元素進行逐bit的'0','1'判斷,並對'0','1'進行統計.imagewidth為數組長度.
void choose(unsigned char *ch,int imagewidth)
{
int i,j,k=0x80,x;
int white,black;
for(i=0;i<imagewidth;i++)
{
for(j=7;j>=0;j--)
{
x=*(ch+i)&k<<j;
//在這裡編寫程序,判斷x為'0'還是為'1',並和前一bit做比較,看是否有變化,假定此時x為'1',如果無變化,則black++;有變化,輸出black,並white++;為'0'的情況同理.注:數組元素的每個元素的第1bit要和前一元素的最後一bit進行比較.
}
}

這裡我邏輯沒理清,不知道如何編,跪求哪位好心的大大幫幫忙~~~

最佳回答:

#include <stdio.h>
#include <string.h>
/*測試統計0 - 256間每個數的 "0","1" 位數 希望和你的想法符合*/
void choose(unsigned char *ch,int imagewidth)
{
int i,j,k=0x80,x;
unsigned char test;
int one,zero;
for(i=0;i<imagewidth;i++)
{ one=0;zero=0;
for(j=0;j<8;j++)
{
test = (ch[i]<<j)&k;
if(test==0) {zero++;printf("0");}
else {one++;printf("1");}
}
printf(" 0:%-2d1:%-2d ",zero,one);

}
}
int main()
{
unsigned char test[256];
int i;
for(i=0;i<256;i++)
test[i]=i;
choose(test,256);
return 0;
}

/*剛才沒有看到注釋裡的要求,設個變量保存test就好了,就可以判斷是否和上次一樣,代碼就不寫了*/
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved