炉石盒子安卓版怎么用:会C编码的帮帮忙,怎么才可以引出一个数组中的一个数?。

来源:百度文库 编辑:中科新闻网 时间:2024/04/28 03:37:48
我有一个N BITS 的数据。比如8 BITS, BIT 的号码从0到7 。8个BIT包含的数据都是TRUE 和 FALSE, 就是0 和1。

比如:
BIT 的号码: 7 6 5 4 3 2 1 0
代表的数据: 0 1 0 0 0 1 1 0

然后我想引出BIT 号码 P 代表的数据, 比如P 是3,就是想引出BIT号码3 下面的数据 0 , P是6,就是想引出1。

这样的C程序要怎么写啊。 大家能帮忙写一个吗?

这不是数组,只是一个byte中的取位操作。8Bit正好是一个unsigned char
要取出第k位,用一个第K位为1,其它位为0的unsigned char做&运算即可得到。
按你上面的说法,最低位是第0位,即下标是从0开始计算

int getbit(unsigned char BITS, int k) //取BIT的第K位值,K可取0--7
{
return BITS&(1<<k); //将1左移k位,再与BIT做&运算
}

搞个数组吧。。。3年前学的C

int a[8];
a[0]=0;
....
a[6]=1
a[7]=0;
a[p]的值

太简单了

你比如P 是3,想引出BIT号码3 下面的数据 0
执行操作:BIT & 0000 1000b 就你是要的结果0000 0000

P是6,想引出1。
执行操作:BIT & 0100 0000b 就是你要的结果0100 0000

或者你这样操作
if((BIT & 0000 1000b)==0) 就说明3位是0
if((BIT & 0100 0000b)!=0) 就说明6位是1

如果想引出第0位的数据,就将源数据和1(对应二进制00000001)取位与(&),如果结果为0,说明第0位是0,如果结果不为0,说明第0位是1。
如果想引出第1位的数据,就和2(对应二进制00000010)取位与.
引出第2位,就和4(对应二进制00000100)取位与.
以此类推。引出第P位,就和2的P次方(对应二进制0..0100.000,1处于从右往左数第P+1位)取位与。

楼上正解!是不是unsigned char 不重要!