C语言:十进制进制转换为其他进制(思想:查表法)
//
// main.c
// Hex conversion
//
// Created by ma c on 15/7/22.
// Copyright (c) 2015年. All rights reserved.
// 要求:十进制向任意进制之间的转换(查表法)。
#include <stdio.h>
//十六进制的转换
void ToHex(int num)
{
int temp;
char chs[8];//定义一个临时容器,长度为8,8X4=32位比特
int pos=8; //定义一个索引
char ch[] = {'0','1','2','3',
'4','5','6','7',
'8','9','a','b',
'c','d','e','f'};
printf("%d的十六进制是:",num);
while(num!=0)
{
temp = num & 15;
chs[--pos]= ch[temp]; //将查表中的数据存放到临时容器中。
num = num >> 4; //向左移动次低四位
};
for(int x=pos;x<8;x++)
{
printf("%c",chs[x]);
}
printf("\n");
}
//八进制的转换
void ToOct(int num)
{
int temp;
char chs[11];//定义一个临时容器
int pos=11; //定义一个索引
char ch[] = {'0','1','2','3',
'4','5','6','7',
'8','9','a','b',
'c','d','e','f'};
printf("%d的八进制是:",num);
while(num!=0)
{
temp = num & 7;
chs[--pos]= ch[temp]; //将查表中的数据存放到临时容器中。
num = num >> 3; //向左移动次低三位
};
for(int x=pos;x<11;x++)
{
printf("%c",chs[x]);
}
printf("\n");
}
//二进制的转换
void ToBinary(int num)
{
int temp;
char chs[32];//定义一个临时容器
int pos=32; //定义一个索引
char ch[] = {'0','1','2','3',
'4','5','6','7',
'8','9','a','b',
'c','d','e','f'};
printf("%d的二进制是:",num);
while(num!=0)
{
temp = num & 1;
chs[--pos]= ch[temp]; //将查表中的数据存放到临时容器中。
num = num >> 1; //向左移动次低一位
};
for(int x=pos;x<32;x++)
{
printf("%c",chs[x]);
}
printf("\n");
}
int main(int argc, const char * argv[])
{
ToHex(60);
ToOct(60);
ToBinary(60);
printf("\n");
return 0;
}