请你把一个整数n转化为二进制并从高位到低位输出。
输入
一行一个整数n,保证1<=n<=10^9。
输出
从高位到低位输出一个二进制数,表示n的二进制形式,每位之间不需要空格。
输入样例
11
输出样例
1011
题解:
这道题有多种解法,我是用了位运算写这道题。
思路:
利用公式n>>i&1求n的第i个二进制位,那么依次把n的每一个二进制位输出就行了。
给你一个n,你可能不知道它的二进制有效位是多少,我的方法是从第31位开始遍历,一直遍历到第0位,遇到有效位的第一个1就开始输出,一直输到第0位。那么,如果一个1也遇不到,说明n等于0。
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
int flag=0;
for(int i=31;i>=0;i--)
{
if(n>>i&1) flag=1;
if(flag) cout<<(n>>i&1);
}
if(!flag) cout<<"0";
return 0;
}