#include<iostream> #include<cmath> using namespace std; void Ten2Radix1(int num, unsigned int radix); void show(char arr[32]); void Ten2Radix2(int num, unsigned int radix); char arr[32] = {'0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0' }; //一开始就初始化 int index = 32; //内存32位 int main(int argc, char *argv[]) { int num1, num2; cin >> num1 >> num2; Ten2Radix1(num1, num2); //先用递归实现取余转换公式计算 Ten2Radix2(num1, num2); //再根据正负值用补码和小端法存储数据在内存中 show(arr); //展示存储的数据 system("pause"); return 0; } void Ten2Radix2(int num, unsigned int radix) //再根据正负值用 补码 和 小端法 存储数据在内存中 { if (num<0) { radix--; switch (radix) { case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: radix += 48; break; case 10: radix = 'A'; break; case 11: radix = 'B'; break; case 12: radix = 'C'; break; case 13: radix = 'D'; break; case 14: radix = 'E'; break; case 15: radix = 'F'; break; default: break; } for (; index >= 0; index--) { arr[index] = radix; } } } void Ten2Radix1(int num,unsigned int radix)//先用递归实现取余转换公式计算 { if (radix>16||radix<=0) { return; } if (num>0) { int temp = num % radix ; if (0<=temp&&temp<10) //int ->char { temp += 48; } switch (temp) { case 10: temp = 'A'; break; case 11: temp = 'B'; break; case 12: temp = 'C'; break; case 13: temp = 'D'; break; case 14: temp = 'E'; break; case 15: temp = 'F'; break; default: break; } arr[--index] = temp; Ten2Radix1(num / radix,radix); } else if (num<0) { Ten2Radix1(num + (long int)pow(radix, 32),radix); } } void show(char arr[32]) { for (size_t i = 0; i < 32; i++) { cout << arr[i]; if (i % 8 == 7 && i<31) { cout << ","; } } cout << endl; }
c++十进制int型整数转换成计算机中存储的任意进制
最新推荐文章于 2024-07-21 22:11:35 发布