适用于任何基础的C ++乘法

时间:2015-08-10 02:13:06

标签: c++ function multiplication base

如何修改此代码以适用于任何基数? (二进制,十六进制,基数10等)

int mult(int a, int b, int base){

    if((a<=base)||(b<=base)){ //only 1 digit
        return a*b;
    }
}

1 个答案:

答案 0 :(得分:1)

与所有数据类型一样,

int实际上存储为二进制文件。通常,如果您正在查看内存(例如调试器),它们将以十六进制表示给您。像intfloat这样的类型只是由各种输出系统格式化为十进制。

由于数据本身是二进制的,因此乘法已经与基数无关。它是产品的展示而不是。例如,假设我有一些4位类型:

0010(2)X 0100(4)= 1000(8)

这正是C ++已经在运行的方式 - 只有32位或64位而不是4位。

因此,不需要以不同方式乘以不同碱基的功能。你需要的是一个显示不同基础的功能。幸运的是,C ++有几种选择。一个是STD的流标志:

std::cout << std::oct << number << "\n";

但是,其中只有3个:hexadecimaldecimaloctal。有几个others,但它们处理的不是基础。

如果您需要其他基础,我不知道提供此类基础的任何图书馆。我搜索过Boost但是却找不到它,但Boost很大而且搜索起来也不那么容易,所以它可能会。 other questions上有一些StackOverflow,您可以查看更广泛的用法。