蓝桥杯 算法提高 输出二进制表示(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;
}
发布了51 篇原创文章 · 获赞 58 · 访问量 4617

猜你喜欢

转载自blog.csdn.net/xyf0209/article/details/104494993