程序

1.写一个函数返回参数二进制中 1 的个数

比如: 15 0000 1111 4 个 1

程序原型:

int count_one_bits(unsigned int value)

{

   // 返回 1的位数

}

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

void count_one_bits(unsigned int value)

{

     int count = 0;

     while (value)

     {

              if (value % 2 == 1)

                      count++;

              value = value / 2;

     }

     printf("%d", count);
     }
     int main()
     {

     unsigned int a = 0;

     printf("请输入一个整数:");

     scanf("%d", &a);

     count_one_bits(a);

     printf("\n");

     system("pause");
     }

2.获取一个数二进制序列中所有的偶数位和奇数位,

分别输出二进制序列。

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

void print(int a)

{

     int i = 0;

     for (i = 30; i >= 0; i -= 2)

     {

              printf("%d", (a >> i) &1);

     }

     printf("\n");

     for (i = 31; i >= 0; i -= 2)

     {

              printf("%d", (a >> i) &1);

     }
     }
     int main()
     {

     int x;

     printf("请输入一个整数:");

     scanf("%d", &x);

     print(x);

     printf("\n");

     system("pause");
     }
  1. 输出一个整数的每一位。

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

void print(int a)

{

     int arr[20] = { 0 };

     int i = 0;

     int count = 0;

     int tmp = a;

     if (a < 0)

     {

              a = -a;

     }

     while (tmp)

     {

              tmp /= 10;

              count++;

     }

     for (i = 0; i < count; i++)

     {

              arr[i] = a% 10;

              a /= 10;

     }

     for (i = count - 1;i >=0; i--)

     {

              printf("%d", arr[i]);

              printf("\n");

     }
     }
     int main()
     {

     int a = 0;

     printf("请输入一个整数:");

     scanf("%d", &a);

     print(a);

     printf("\n");

     system("pause");
     }

4.编程实现:

两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?

输入例子:

1999 2299

输出例子:7

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<stdlib.h>

void function(int x, int y)

{

     int c = 0;

     int z;

     for (z = x^y; z != 0;z >>=1)

     {

              c += z & 1;

     }

     printf("%d", c);
     }
     int main()
     {

     int a = 0;

     int b = 0;

     printf("请输入两个整数:");

     scanf("%d,%d", &a, &b);

     function(a, b);

     printf("\n");

     system("pause");
     }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值