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

麻烦各位像个简单易行的,最主要的是精简代码。多谢啦!
										
					
	
程序代码:#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;
}
										
					
	
程序代码:#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;
}
	
		
			
		
	
	
		
			
		
	
