如何修改此代码以适用于任何基数? (二进制,十六进制,基数10等)
int mult(int a, int b, int base){
if((a<=base)||(b<=base)){ //only 1 digit
return a*b;
}
}
答案 0 :(得分:1)
int
实际上存储为二进制文件。通常,如果您正在查看内存(例如调试器),它们将以十六进制表示给您。像int
和float
这样的类型只是由各种输出系统格式化为十进制。
由于数据本身是二进制的,因此乘法已经与基数无关。它是产品的展示而不是。例如,假设我有一些4位类型:
0010
(2)X 0100
(4)= 1000
(8)
这正是C ++已经在运行的方式 - 只有32位或64位而不是4位。
因此,不需要以不同方式乘以不同碱基的功能。你需要的是一个显示不同基础的功能。幸运的是,C ++有几种选择。一个是STD的流标志:
std::cout << std::oct << number << "\n";
但是,其中只有3个:hexadecimal,decimal和octal。有几个others,但它们处理的不是基础。
如果您需要其他基础,我不知道提供此类基础的任何图书馆。我搜索过Boost但是却找不到它,但Boost很大而且搜索起来也不那么容易,所以它可能会。 other questions上有一些StackOverflow,您可以查看更广泛的用法。