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进行比较.
}
}
}
这里我逻辑没理清,不知道如何编,跪求哪位好心的大大帮帮忙~~~ 展开
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进行比较.
}
}
}
这里我逻辑没理清,不知道如何编,跪求哪位好心的大大帮帮忙~~~ 展开
1个回答
展开全部
#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就好了,就可以判断是否和上次一样,代码就不写了*/
#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就好了,就可以判断是否和上次一样,代码就不写了*/
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询