int Bi(int num,int location) { int mask = 01; int j; static int size = 8 * sizeof(int); num >>= location; j = mask & num; if(j == 1) { return 1; } else { return 0; } } 2009-10-20 #include<stdio.h> int Bi(int num); int main(void) { int num; printf("请输入一个整数/n"); scanf("%d",&num); printf("%d 打开的位为%d/n",num,Bi(num)); return 0; } int Bi(int num) { int mask = 01; int j,count = 0; int i = 0; static int size = 8 * sizeof(int); for(i = 0; i < size; i++,num >>= 1) { j = mask & num; if(j == 1) { count++; } } return count; } #include<stdio.h> int Bi(int num,int location); int main(void) { int num,location; printf("请输入一个整数/n"); scanf("%d",&num); printf("请输入该整数二进制的位/n"); scanf("%d",&location); printf("%d 该位为%d/n",num,Bi(num,location)); return 0; } #include<stdio.h> int rotate_1(unsigned int n, unsigned int b); int main(void) { unsigned int x,y; printf("请输入一个整数/n"); scanf("%d",&x); printf("请输入要移动的位/n"); scanf("%d",&y); printf("%d 该位为%d/n",x,rotate_1(x,y)); return 0; } int rotate_1(unsigned int n, unsigned int b) { static int size = 8 * sizeof(int); unsigned int overflow; b %= size; /* keep b a valid value */ overflow = n >> (size - b); /* save bits that are shifted out */ return (n << b) | overflow; }