C语言对数组中的每个元素进行逐bit的'0','1'判断

我想编个程序对数组ch中的每个元素进行逐bit的'0','1'判断,并对'0','1'进行统计.imagewidth为数组长度.voidchoose(unsignedch... 我想编个程序对数组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进行比较.
}
}

这里我逻辑没理清,不知道如何编,跪求哪位好心的大大帮帮忙~~~
展开
 我来答
mjl86
2008-05-01 · TA获得超过344个赞
知道小有建树答主
回答量:399
采纳率:0%
帮助的人:399万
展开全部
#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就好了,就可以判断是否和上次一样,代码就不写了*/
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式