問題如下:
有60顆LED分別為
LED1 LED2 LED3 LED4 LED5 LED6 …..LED60
當有一訊號為1時
LED會顯示
LED1亮
當有一訊號為2時
LED會顯示
LED1滅 LED2亮
當有一訊號為3時
LED會顯示
LED1亮LED2亮
當有一訊號為4時
LED會顯示
LED1滅LED2滅LED3亮
當有一訊號為5時
LED會顯示
LED1亮LED2滅LED3亮
...
….
當有一訊號為256時
LED會顯示
LED1亮LED2亮LED3亮 LED4亮…….. LED60亮
如果不用switch來寫的話,請問眾大神這大概,要怎麼用C來寫??
麻煩大大解惑 謝謝^^
如果先不考慮 60 個 LED 的問題,256 可以亮 9 個燈,我想到 2 種做法給您參考。
陣列版本
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int input = 256;
int led[9];
for(int i=0; i<9; i++)
{
led[i] = (input & 1 << i) != 0;
}
for(int i=0; i<9; i++)
{
printf("%d", led[i]);
}
printf("\n");
return 0;
}
不能用陣列版本
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int input = 256;
int led1, led2, led3, led4, led5, led6, led7, led8, led9;
led1 = (input & 1) != 0;
led2 = (input & 2) != 0;
led3 = (input & 4) != 0;
led4 = (input & 8) != 0;
led5 = (input & 16) != 0;
led6 = (input & 32) != 0;
led7 = (input & 64) != 0;
led8 = (input & 128) != 0;
led9 = (input & 256) != 0;
printf("%d", led1);
printf("%d", led2);
printf("%d", led3);
printf("%d", led4);
printf("%d", led5);
printf("%d", led6);
printf("%d", led7);
printf("%d", led8);
printf("%d", led9);
printf("\n");
return 0;
}
C++輸出寫法,value為輸入值。
#include <iostream>
int main()
{
long long value = 4;
long long nowValue = 1;
for(unsigned int index = 0; index < 60; index++)
{
if((nowValue & value) == nowValue)
{
std::cout << index + 1 <<"開" << std::endl;
}
nowValue <<= 1;
}
return 0;
}