打印一个整数的二进制数

编写一个函数,打印一个整数的二进制数

在二进制中,奇数的尾数一定是1,偶数的尾数一定是0,

我们要设计一个以二进制形式表示整数的方法或算法。例如,如何用二进制表示十进制数5?在二进制中,奇数的末尾一定是1,偶数的末尾一定是0,所以通过5%2即可确定5的二进制数的最后一位是1还是0.一般而言,对于数字 n ,其二进制的最后一位是 n &2。因此,计算的第一位数字实际上是待输出二进制数的最后一位。这一规律提示我们,在递归函数的递归调用之前计算n82,在递归调用之后打印计算结果。这样,计算的第1个值正好是最后一个打印的值。
要获得下一位数字,必须把原数除以2。这种计算方法相当于在十进制下把小数点左移一位,如果计算结果是偶数,那么二进制的下一位数就是0:如果是奇数,就是1。例如,5/2得2(整数除法),2是偶数(2%2得0),所以下一位二进制数是0.到目前为止,我们已经获得01。继续重复这个过程。2/2得1,1%2得1,所以下一位二进制数是1。因此,我们得到5的等价二进制数是101。那么,程序应该何时停止计算?当与2相除的结果小于2时停止计算,因为只要结果大于或等于2,就说明还有二进制位。每次除以2就相当于去掉一位二进制,直到计算出最后一位为止。

#include <stdio.h>
void to_binary(unsigned long n);

int main(void){
	unsigned long number;
	printf("Enter an integer (q to quit):\n");
	while(scanf("%lu",&number)==1){
	printf("Binary equivalent:");
	to_binary(number);
	putchar('\n');
	printf("Enter an integer (q to quit):\n");		
	}
	printf("Done.\n");
	
	return 0;
} 

void to_binary(unsigned long n){
	int r;
	r= n % 2 ;
	if(n>=2)
	     to_binary(n/2);
	putchar(r==0 ? '0':'1');
	return ;
}

运行结果: 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值