lq1.4一题3解*二进制中1的个数

tech2024-07-07  64

正题

#include <stdio.h> #include <stdlib.h> // itoa int main() { int a;//a:数 scanf("%d",&a); char b[32];//用于输出二进制 itoa(a,b,2);//使进制转化的函数 printf("该数的二进制表示为:%s\n",b); //法一:通过逐个位与1进行与运算来计数;1_1为向左移。 int n1_1=0; for(int i=0;i<32;i++) { if((a&(1<<i))==(1<<i)) n1_1++; } printf("第一种方法结果为%d\n",n1_1); //法一的变式:向右移来”与“。 int n1_2=0; for(int i=0;i<32;i++) { if(((a>>i)&1)==1) n1_2++; } printf("第一种方法变式结果为%d\n",n1_2); //(x-1)&x:可以去掉x二进制里的最后的一个1 int n2=0; for(;a!=0;) { a=(a-1)&a; n2++; } printf("第二种方法结果为%d\n",n2); }
最新回复(0)