C语言编程,我想用16位表示64种状态,

关于C语言中,我想用16位表示64种状态,比如用1表示LED点亮,0表示LED熄灭,比如用1000 0000 0000 0000表示1#LED灯亮起(因为1用16进制表示为0001),2000 0000 0000 0000表示第2LED灯亮起(因为2用16进制表示为0010),F000 0000 0000 0000 表示1、2,3、4LED灯亮起(因为F用16进制表示为1111),又如0F00 0000 0000 0000表示5、6、7、8LED灯亮起。即将每一位又分成4位,这样就可以表示64个状态,如何编写函数来比较,比如我输入5,如果那16位中包含有5就返回真,否则返回假,如0F00 0000 0000 0000表示5、6、7、8均为1,这样如果我输入5,则返回真,如果我输入为1,则返回假,请问各位高手能否帮忙解答。

恩,对的,是用16进制的16位(二进制位64位),来构成64位,然后每一位用1来表示开,0表示关。

到底是16进制还是2进制。64位用2进制,最少只要6位,16进制只要2个就可以了。

二进制表示比较清晰。

可以参考下8583包里的位图,c下结构代码有很多

按照你的意思是使用64位(16进制是64/4=16位)表示64个状态,

无关乎编程语言,我觉得你的问题有如下几个关键之处需要考虑:
1.16个16进制位以何种(数据)结构保存?因为采用高级语言编程处理的话,很少直接要求编程者去涉及内存空间的管理,所以16进制数的存放反而不好管理。
2.16个数与64种状态一一对应的关系如何表达?这里需要一个映射算法。
3.输入与状态的查找匹配怎么做?这里需要一个查询算法。

关键的地方似乎只有这么多,所以我好奇的是,你想攻克的是哪一个问题?

16位2进制,可以表现的状态有65536种状态。如果只想表示64种状态,8进制就够了,
例如:
0100 0000 (十进制为64)可以表示为7#灯亮,其它的灯都是灭的。
0010 1000 (十进制为40)可以表示4# 6#灯亮,其它的灯都是灭的。