打印

想给数组赋值

[复制链接]
1823|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kayibi|  楼主 | 2010-6-21 17:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近做了一个测试的板子,要求对输入信号测试。以0表示合格,1表示不合格。一共有32个信号,连续测试1000次,只要有一次出现1就判断该信号不合格。我在开始时定义4个变量,假设A,B,C,D.将第一次测试的就诶过分别赋值给A,B,C,D。然后进行第二次测试,将结果分别与A,B,C,D求或再赋值给A,B,C,D。这样第N+1次的测试结果都与前N次求或过的值再求或。一直到1000次结束。最后我再来判断这四个变量里有多少个1,并且将1对应的序号显示出来。比如A对应的8位分别是1—8。请问大虾们,我怎么做才最简单?我考虑过将A先跟0X01求与,判断是否是1。最好是有简单的程序提示。谢谢!急。

相关帖子

沙发
xmufzw| | 2010-6-21 18:16 | 只看该作者
可以考虑用移位来做,移位一次判断一下

if(A&0x80)
...
A=A<<1;
来判断最高位是不是为1

使用特权

评论回复
板凳
aresc| | 2010-6-21 18:53 | 只看该作者
本帖最后由 aresc 于 2010-6-21 21:50 编辑

假如结果存在数组A [4]中;

for (k = 0; k < 1000; k++)
{
       for (i=0; i<4; i++ )
       {
               for (j=0; j<8; j++)
               {
                       result = Signal_Test(k, 8*i+j); // result = 0 or 1. 第k次, 第8*i+j个信号测试结果
                       result <<= (7-j);
                       A |= result;
               }
       }
}

for (i=0; i<4; i++)
{
       for (j=0; j<8; j++)
      {
             if (A & 0x80)
             {
                  printf("The signal %d test failed.\n", i*8 + j);
             }
             A <<= 1;
      }
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

39

帖子

1

粉丝