方法:乘R取整法
十进制小数转换为R进制数时,可以连续的乘以R,直到小数部分变成0,每次相乘得到的结果的整数部分取出来就组成了R进制的数字。
例如:0.3125转换为二进制的数字
0.3125*2=0.625 //取整数部分 0,并取小数部分0.625参加下一次运算
0.625*2=1.25 //取整数部分 1,并取小数部分0.25参加下一次运算
0.25*2=0.5 //取整数部分 0,并取小数部分0.5参加下一次运算
0.5*2=1.0 //取整数部分 1,小数部分为0,结束运算
所有转换的最终结果就是:0.0101
代码实现:
int main() {
double b;
cout << "请输入一个十进制浮点数" << endl;
cin >> b;
int a;
cout << "请输入想转换的进制数" << endl;
cin >> a;
int c[MAX];
int d,i=0;
double temp;
memset(c ,0, sizeof(c));
do {
d = b;//取整数部分
c[i] = d; i++;
temp = b-d;//取小数部分
b = temp * a;//小数部分乘进制
} while (temp!= 0);
cout << "0.";
for (int j = 1; j < i; j++) {
cout << c[j];
}
return 0;
}
二.整数取反
问题:想要把123456789取反该如何操作?
long opposit(long num) {
long n = num;
long m=0;
while (n != 0) {
m = m * 10 + n % 10;
n /= 10;
}
return m;
}
int main() {
long d=opposit(123456789) ;
cout<<d<<endl;
}