pragma mark 進(jìn)制查表法-優(yōu)化
pragma mark 概念
pragma mark 代碼
#include <stdio.h>
void printfBunary(int value);
void total(int value,int base,int offset);
void printfBunary(int num);
void printOct(int num);
void total(num, 15, 4);
int main()
{
printHex(20);
return 0;
}
void printHex(int num)
{
total(num, 15, 4);
}
void printOct(int num)
{
total(num, 7, 3);
}
void printfBunary(int num)
{
total(num, 1, 1);
}
// 轉(zhuǎn)換所有的進(jìn)制
// value也就是需要轉(zhuǎn)換的數(shù)組
// base就是需要&上得數(shù)
// offset就是需要右移的位數(shù)
void total(int value,int base,int offset)
{
// 1.定義一個(gè)數(shù)組,用于保存十六進(jìn)制中所有的取值
// 規(guī)律:取出的4個(gè)二進(jìn)制位得到的值,正好是數(shù)組中角標(biāo)對應(yīng)的值
char charValue[] = {'0','1','2','3','4','5','6','7','8',
'9','a','b','c','d','e','f'}; // 表 裝了是可能所有的取值
char results[32] = {'0'};
int pos = sizeof(results)/sizeof(results[0]);
while (value != 0) {
// 取出4位的值
int res = value & base; // 1造寝、7、15
// 利用這個(gè)值作為索引去數(shù)組中查詢對應(yīng)的十六進(jìn)制的值
char c = charValue[res];
// printf("%c",c);
// 將取出來的值防盜結(jié)果數(shù)組中
results [--pos] = c;
// results[] = c;
// 每取完一次,就干掉它最低的4位
value = value >> offset; // 1、3逢净、4
// printf("pos = %i",pos);
}
for (int i = pos; i < 8; i ++) {
printf("%c",results[i]);
}
printf("\n");
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者