蓝桥杯 算法提高 输出二进制表示(c语言版详细注释)

试题 算法提高 输出二进制表示

                                                                                  蓝桥杯试题解答汇总链接

资源限制

       时间限制:1.0s 内存限制:256.0MB


问题描述

       输入[-128,127]内的整数,输出其二进制表示。提示,可使用按位与&


输入格式

       7


输出格式

       00000111


样例输入
7

样例输出
00000111

数据规模与约定
输入数据中每一个数的范围。
例:0<n,m<100, 0<=矩阵中的每个数<=1000。
代码补充说明
假设n=7在此列举count=1和count=7时的运算步骤方便大家理解>>和&运算:
7的二进制为:0000 0111
7>>(8-1)后即7>>7(即把7的二进制右移7位),得到0000 0000即0,然后0&1得到0
7>>(8-7)后即7>>1(即把7的二进制右移1位),得到0000 0011即3,然后3&1得到1
代码
#include<stdio.h>
void f(int x,int count){
	if(count>8){//共8位操作操作8此后跳出 
		return;
	}
	printf("%d",x>>(8-count)&1);//每次右移8-count位并和1进行按位与计算 
	f(x,++count);//注:任何十进制数和1按位与1本质就是比较首位是否相同 
}
int main()
{
	int n;
	scanf("%d",&n);
	f(n,1);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Derrick-Xu

谢大哥打赏,我会继续努力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值