按位操作的应用

来源:互联网 发布:阿里php招聘 编辑:程序博客网 时间:2024/05/20 10:12

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

int  count_one _bits( unsigned int n){    int count=0;int n=0;    scanf("%d",&n);.    while(n){    n=n&(n-1);       count++;

}

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

    include <stdio.h>    int main()    //偶数位{        int num=0,i=0;        char p;        scanf("%d",&num);        for (i=31; i>=0;i=i-2)        {            p=(num>>i)&1;            printf("%d",p);        }        return 0;    } 
    include <stdio.h>    int main()    // 奇数位{        int num=0,i=0;        char p;        scanf("%d",&num);        for (i=30; i>=0;i=i-2)        {            p=(num>>i)&1;            printf("%d",p);        }        return 0;    }       #3. 输出一个整数的每一位。#include<stdio.h> int main(){  //逆序,非正序    int n=0;int e=0;    scanf("%d",&n);    while(n){        e=n%10;        n=n/10;        printf("%-2d",e);    }} 

4..编程实现:

两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子:
1999 2299
输出例子:7

include <stdio.h>  include <stdlib.h>  

int main()
{
int i = 0;
int x = 1999;
int y = 2299;
int count = 0;
for (i = 0; i < 32; i++)
{
if ((x % 2) ^ (y % 2) == 1) //核心代码
{
count++;
}
x /= 2; //右移一位,逐位比较
y /= 2;
}
printf(“%d\n”, count);
system(“pause”);
return 0;
}

原创粉丝点击