欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-14 23:17:48
...

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

                                                                                  蓝桥杯试题解答汇总链接

资源限制

       时间限制: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;
}
相关标签: 蓝桥杯