【C语言】一些关于二进制位的一些题题目哦。

来源:互联网 发布:2017微信数据报告 编辑:程序博客网 时间:2024/05/20 16:13

    

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

输入例子:

1999 2299

输出例子:

7

#include <stdio.h>int main(){int a,b;int count;a =0;b = 0;count = 0;printf("请输入两个数");scanf("%d %d",&a,&b);a = a^b;while(a){++count;a = a & (a-1);}printf("%d",count);return 0;}

编写函数:

unsigned int  reverse_bit(unsigned int value);

这个函数的返回 值value的二进制位模式从左到右翻转后的值。

#include <stdio.h>int main(){int num = 0;int end = 0;int p = 0;int i = 0;printf("请输入一个数");scanf("%d",&num);for( i = 31;i >= 0;i--){p = (num & 1) << i;num = num >> 1;end += p;}printf("%u",end);return 0;}

不使用(a+b)/2这种方式,求两个数的平均值。

#include <stdio.h>int main(){int avg;int a,b;avg  =0;a = 0;b = 0;printf("请输入两个数");scanf("%d %d",&a,&b);avg = ((a & b) << 1)+(a ^ b) >> 1;printf("平均数是%u",avg);return 0;}

一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。请找出这个数字。

#include <stdio.h>int main(){int i,j;int arry[] = {7,7,88,88,9,66,66,4,4};j = arry[0];for(i =1; i < sizeof(arry)/sizeof(arry[0]);i++){j ^= arry[i];}printf("%u",j);return 0;}


本文出自 “剩蛋君” 博客,请务必保留此出处http://memory73.blog.51cto.com/10530560/1677174

0 0
原创粉丝点击