#include<stdio.h> intmain() { int x = 0; int a = 0; int y = 0; printf("计算一个数字的二进制中1的个数\n"); printf("请输入一个数字:->"); scanf("%d",&x); y = x; if (x>=0) { while(x) { if ( x % 2 == 1 ) { a++; } x = x / 2; } }else { x = -(x); while(x) { if ( x % 2 == 1 ) { a++; } x = x / 2; } a = 32 - a; a = a + 1; } printf("%d的二进制中有%d个1\n",y,a); return0; }
#include<stdio.h> intmain() { int x = 0; int a = 0; int y = 0; int i = 0; printf("计算一个数字的二进制中1的个数\n"); printf("请输入一个数字:->"); scanf("%d",&x); y = x; for (i=0; i<32; i++) { if (((x >> i) & 1) == 1) //这一步得到这个数字的二进制中的1位数字是1还是0 { a++; } } printf("%d的二进制中有%d个1\n",y,a); return0; }
方法3:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#include<stdio.h> intmain() { int x = 0; int a = 0; int y = 0; int i = 0; printf("计算一个数字的二进制中1的个数\n"); printf("请输入一个数字:->"); scanf("%d",&x); y = x; while (x) { x = x & (x-1); a++; } printf("%d的二进制中有%d个1\n",y,a); return0; }
#include<stdio.h> intmain() { int c; int b = 0; int x,y; printf("计算两个数字的二进制中不同位的个数\n"); printf("请输入两个数字:->"); scanf("%d%d",&x,&y); c = x ^ y; while(c) { if ( c % 2 == 1 ) { b++; } c = c / 2; } printf("有%d个不同的位数\n",b); return0; }
#include<stdio.h> intmain() { int a; int x = 0; printf("打印二进制的奇数位和偶数位\n"); printf("请输入数字:->"); scanf("%d",&x); printf("奇数位:"); for (a = 30; a>=0; a -= 2) { printf("%d ",(x>>a)&1); } printf("\n"); printf("偶数位:"); for (a = 31; a>=0; a -= 2) { printf("%d ",(x>>a)&1); } printf("\n"); return0; }
使用指针打印数组内容
1 2 3 4 5 6 7 8 9 10 11 12
#include<stdio.h> intmain() { int i; int arr[10] = {1,2,3,4,5,6,7,8,9,10}; int sz = sizeof(arr)/sizeof(arr[0]) - 1; int* p = arr; for (i=0; i<=sz; i++) { printf("%d ",*p+i); } return0; }