蓝桥杯 算法提高 输出二进制表示(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;
}
上一篇: java编写一个简单的压力测试程序