• 计算十进制整数的二进制中的1的数目


     1 #include <stdio.h>
     2 int getbit( int a,int i)
     3 {
     4     return a&(1<<i);// 只取数字a第i位上的值 
     5 }
     6 int main()
     7 {
     8      int n;
     9   while(scanf("%d",&n)!=EOF)
    10   {
    11       int i;
    12       int count=0;
    13       int tem=-1;
    14       for(i=0;i<32;i++)//int 32位
    15       {
    16           int tem=getbit(n,i);
    17           if(tem!=0) ++count;
    18       }
    19       printf("%d
    ",count);
    20   }
    21 
    22   return 0;
    23 }

    异或  (不同1,同0) 

     

    取反

    &  与运算

    (与00,与1不变) 用来 制某位为0

      Reset(a,i)  a & ~(1<<i)  制第i位为0

     

     Getset(a,i)  a&(1<<i)  取第i

     

    高效替换   if(n%2==0)  ---->   if(n&1 == 0)

               n/=pow(2,x)   ---->    n >>= x

               n*=pow(2,x)   ---->    n <<= x

    | 或 (或1为1

  • 相关阅读:
    Mysql探索之索引详解,又能和面试官互扯了~
    POJ 1163
    POJ 1157
    POJ 1143
    POJ 1164
    HDU 2553
    POJ 1321
    POJ 1125
    POJ 2488
    POJ 3083
  • 原文地址:https://www.cnblogs.com/xiaoyesoso/p/4257755.html
Copyright © 2020-2023  润新知