新手求助!如何依次产生锁定某个二进制位的数?
可能我表述的不太明白,表达能力不太好。还是举个例子吧:00000001,00000011,000000101,就是某个位不变(这里是末尾)依次往上加;
再来一个,00010000,00010001,00010010就是这样额。
自己想的太麻烦了。8个for,看的我都头疼。

麻烦各位像个简单易行的,最主要的是精简代码。多谢啦!

2011-05-30 22:17
2011-05-30 23:14
程序代码:#include <stdio.h>
int main(int argc, char *argv[])
{
#define set_fix(bit) ( 1 << ((bit) % 31) )
#define combine(fix, offset) ( fix | (1<<offset) )
int fix;
int i;
printf("init fix bit?\n");
scanf("%d", &fix);
fix = set_fix(fix);
for (i=0; i<32; i++) {
printf("0x%X\t", combine(fix, i));
}
return 0;
}

2011-05-30 23:28
程序代码:#include <stdio.h>
int main(void) {
unsigned int source, fix, i;
printf("Enter source: ");
scanf("%u", &source);
printf("Enter fix: ");
scanf("%u", &fix); // if(fix > sizeof(int) * 8) return 1;
source |= fix-- ? 1 << fix : 0;
for(i = 0; i < sizeof(int) * 8; i++)
printf("%d", (0x80000000 & (source << i)) >> (sizeof(int) * 8 - 1)); // 如果使用16环境,0x80000000改为0x8000
return 0;
}

2011-05-31 10:07
2011-05-31 10:18
2011-05-31 10:46
2011-05-31 22:44