目录(涉及知识点)

方法一:先取模,再进行除运算

算数操作符

方法二:与运算、右移、for循环、if判断


位操作符

移位操作符

方法三:whlie循环、与运算 ——最高效的

          • -

方法一:先取模,再进行除运算

          • -
#include<stdio.h>

int main()
{
    int num = 0;
    scanf("%d", &num);
    int count = 0;
    
    while(num)
    {
        if(num % 2 == 1)
        count++;
        num = num /2;
    }

    printf("二进制中1的个数为:%d\n", count);
    
    return 0;
}

算数操作符

/ ,只要有double浮点数时,printf用%lf,(默认6位

% ,操作数必须都是整数

方法二:与运算、右移、for循环、if判断

#include<stdio.h>
int main()
{
    int num = 0;
    int count = 0;
    scanf("%d",&num);

    int i ;
    for(i = 0; i <32; i++)
    {
        if(1==((num >> i) & 1))
            count++;
    }
    printf("二进制中1的个数为:%d\n",count);
    return 0;
}

位操作符

  1. & 按 二进制 位与 。 两个同时为1,才是1。有0全是0
  2. | 按 二进制 位或 。 两个同时为0,才是0,有1全是1
  3. ^ 按 二进制 位异或。 两个相同为0,相异为1

移位操作符

======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

1.操作数只能是整数

2.移动的是二进制位

:右移操作符 。包括 算术右移与逻辑右移

算术右移:是符号位要一起移动,并且在左边补上符号位

逻辑右移:是将二进制数整体右移,左边补0即可

<<:左移操作符 。左边丢弃,右边补零

Int a=-1

Int b=a>>1

b还是是-1

源码:符号位 (正0负1

反码:符号位不变,其余与源码相反

补码:反码末位+1

方法三:whlie循环、与运算

          • -

=================================================

特点:循环直到num为0,循环多少次,就有多少个1,不用再用 if判断

#include<stdio.h>

int main()
{
    int num = 0;
    scanf("%d", &num);

    int count = 0;
    while (num)
    {
        num = num & (num - 1);   
        count++;
    }
    printf("二进制中1的个数为:%d\n", count);
    return 0;
}

标签: 内存, count, int, 二进制, C语言, 操作符, num, 右移

相关文章推荐

添加新评论,含*的栏目为必填