巧妙运用按位与 & ,获取所需二进制序列。

  • 求写一个参数中的二进制位数为1的返回值:
#include <stdio.h>
int count_one_bits (unsigned int value)
{
int i=0;
for (i=0;i<32;i++)
{
 if (value>>i&1)

> 在按二进制序列循环的32次中,不能改变value的取值。

 {
   count ++;
 }
}
    return count ;
}
int main ( ) 
{
 int value=0;
 int ret=0;
 scanf ("%d",&value);
 ret=count _one_bites(value);
 printf ("%d ",ret);
 return 0;
}
  • 获取一个数二进制序列中的所有奇数位和偶数位,分别输出二进制数列
#include <stdio.h>
int main ( )
{
 int value =0;
 int i=0;
 printf ("请输入一个整数:\n);
 scanf ("%d",&value);
 printf ("偶数序列为:\n);
   for (i=31;i>0;i=i-2)
   { 
       printf ("%d",value>>i&1);
   }
  printf ("奇数序列为:\n);
   for (i=30;i>=0;i=i-2)
   { 
       printf ("%d ",value>>i&1);
   }
   return 0;
}
  • 输出一个整数的每一位:
int Print_one (int n)
{
  if (n>9)
  Print_one(n/10);
 printf ("%d ",n%10);
 }
 int main ( )
 {
   int n=0;
   scanf ("%d",&n);
   Print_one(n);
   return 0;
  }
  • 编程实现:
    两个Int型(32位)整数m和n的二进制表达中,有多少个位不同?
#include <stdio.h>
int Difer_bits (int m,int n)
{
  int i=0;
  int count =0;
   for (i=0;i<32;i++)
   {
     if ((m>>i&1)!=(n>>i&1))
      {
        count ++;
      }
  }
  return count ;
}
int main ( )
{
  int m=0;
  int n=0;
  int ret =0;
  scanf ("%d%d",&m,&n);
    ret =Difer_bits(m,n);
    printf ("%d ",ret);
  return 0;
}
  • 求一个数的二进制序列的表示,都可以用for 循环配合n>>i&1来使用。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值