用代码实现C函数功能——十进制转换为二进制

本文介绍了如何使用C语言通过位操作将十进制数转换为二进制。通过左移和按位与运算,巧妙地实现了从10进制到二进制的转换。提供了一个简单的源代码示例,包含输入、处理和输出过程。
摘要由CSDN通过智能技术生成

      十进制转换为二进制,在数学上有很多种解法,可以每次除2后取余数,可以减去2的n次幂,n递减。不过在C语言中,有简单巧妙的算法。

      我们知道任何数在计算机中都是以二进制代码存储的,在C语言课本中位操作一般讲的比较简单,而这个例子中,我看到了位操作的巧妙之处。在二进制中每次左移一位,相当于*2,而且有按位与&这个功能,所以我们可以想,用一位二进制左移,然后跟10的二进制按位与,这一就能表达出10进制的二进制形式了。

      由于网上到处复制别人成果的现象泛滥,而且不加分析,本人对此种现象深恶痛觉。但是鉴于本人技术有限,自学C++第二天,所以此段代码仍是参考别人,但是经过自己添加修改,自己也分析掌握了其中的技巧,相信下一次我能完全自己学出代码来,加油!

/*十进制转换为二进制*/
#include "Stdio.h"
#include "Conio.h"
#define N    16       /*16表示int是16位的位容器*/

void  change(int X)
{
      int i;
      printf("The result of change is:" );
      for(i=1;i<=N;i++)
      {
         if((1<<N-i)&X)  /*1左移N-i,只要二进制中有一位按位与之后为1就输出1*/
            printf("1");
         else
            printf("0");
      }
      getchar();
}
int main(void)
{
    int x;
    printf("Input number:");
    scanf("%d",&x);
    change(x);
    getchar();
    return  0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值