十进制怎么转位二进制,以及其代码用C语言怎么写?

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int x;
    int a[100];
    while(cin>>x){
        memset(a,0,sizeof a);
        int k=0;
        while(x!=0){
            a[k++]=x%2;
            x>>=1;
        }
        for(int i=k-1;i>=0;i--){
            cout<<a[i];
        }
        cout<<endl;
    }
    return 0;
}

运行后:

  • 还有一种是把前面的0都输出,凑够32位的代码;
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int x;
    while(cin>>x){
        for(int i=31;i>=0;i--){
            cout<<(x>>i&1);//先右移,在与运算
        }
        cout<<endl;
    }
    return 0;
}

运行后:

负数转换成二进制

1.将十进制输转化成二进制数,不管符号。

2.对转化的二进制数逐位取反

3.对取反后的二进制数加1,结果就是十进制负数转化成的二进制数。

例:-32转化成二进制数

1.(十进制)32=(二进制)00100000 
2.(二进制)00100000逐位取反为:11011111 
3.二进制数+1得:11100000

例:-5转化成二进制数

1.(十进制)5=(二进制)00000101 
2.(二进制)00100000逐位取反为:11111010 
3.二进制数+1得:11111011

猜你喜欢

转载自blog.csdn.net/VP_Death_Note/article/details/81436584