新手求助!如何依次产生锁定某个二进制位的数?
可能我表述的不太明白,表达能力不太好。还是举个例子吧: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; }