如何用位运算实现进制转换

输入一个任意进制的数,转换为其他三种进制。
用C或C++编程实现32位无符号数(或正整数)与十六进制、八进制、二进制之间的转换。如输入任一种进制数,则输出其它三种与之对应的制数。
实现时使用位运算:采用循环移位,将32位整数一位一位从左向右移出并显示

先给你写一个二进制的别着急奥 先采纳


#include <iostream>
using namespace std;
int main()
{
    int n;
    int a[1005];
    int count = 0;
    cin>>n;
    while(n!= 0)
    {
        a[count++] = n & 1;
        n = n>>1;
    }

    for (int i = count - 1; i >= 0; i--)
    {
        cout<<a[i];
    }
    cout<<endl;
    return 0;
}

int main()
{
    int n;
    int a[1005];
    int count = 0;
    cin>>n;
    int tempn = n, tempc = count;
    
    //十进制转二进制 
    while(n!= 0)
    {
        a[count++] = n & 1;//a % b = a & (b-1)相当于n%2 
        n = n>>1;//右移1位相当于n/2 
    }

    for (int i = count - 1; i >= 0; i--)
    {
        cout<<a[i];
    }
    cout<<endl;

    n = tempn;
    tempc = count;

    //十进制转八进制 
    while(n!= 0)
    {
        a[count++] = n & 7;//a % b = a & (b-1)相当于n%8 
        n = n>>3;//右移1位相当于n/8 
    }

    for (int i = count - 1; i >= tempc; i--)
    {
        cout<<a[i];
    }
    cout<<endl;
    
    n = tempn;
    tempc = count;

    //十进制转十六进制 
    while(n!= 0)
    {
        a[count++] = n & 15;//a % b = a & (b-1)相当于n%16 
        n = n>>4;//右移1位相当于n/16 
    }

    for (int i = count - 1; i >= tempc; i--)
    {
        cout<<a[i];
    }
    cout<<endl;
    
    return 0;
}