进制之位运算

十进制转换成二进制   

//十进制转2进制
#include<iostream>
using namespace std;
int inttoBin(int num)
{
    int i,tag=0;
    unsigned int mask = 0x80000000 ;//1000 0000 0000 0000  
    for(i = 0; i < 32; i++)// 32次 
    {
        if((num & mask) == mask)
        {
            if(!tag) tag=1;
            printf("1");
        }
        
        else if(tag)
        {
            printf("0");
        }
        num = num << 1;
        
        /*if((i + 1) % 4 ==0) //每四个空位 
        {
            printf(" ");
        }*/
    }
    
    printf("\n");
}
int main()
{
    inttoBin(11);
} 
View Code

 

十、八进制转换成十六进制  注意代码注释

//8进制转换成16进制 八进制表示0 
#include<iostream>
#include<cstring>
using namespace std;
int inttoox(unsigned int num)
{
    int i;
    unsigned int temp = num;
    char s[11];
    memset(s,0,sizeof(char));
    char tmp='a';
    s[0] = '0';
    s[1] = 'x';
    s[10] = '\0';
    unsigned int mask = 0x0000000f;
    for(i = 2; i < 10; i++)
    {
        if((temp & mask) >=10) //不要忘了等于号 
        {
            s[11-i] = (temp & mask) - 10 + 'a'; 
            if(s[11-i]=='a') cout<<s[11-i]<<endl;
        }
        else
        {
            s[11-i] = (temp & mask) + '0';
        }
        
        temp = temp >> 4;
    }
    
    printf("result = %s\n",s);
    //printf("result = %s\n",s);
}
int main()
{
    int x=10;//十进制 
    for(int x=10;x<=16;x++)
    inttoox(x);
    inttoox(012);//八进制 
} 
View Code

 

posted @ 2019-02-18 17:25  Hello_World2020  阅读(186)  评论(0编辑  收藏  举报