C++ C++;任意基的乘法

C++ C++;任意基的乘法,c++,function,multiplication,base,C++,Function,Multiplication,Base,如何修改此代码以适用于任何基数?(二进制、十六进制、十进制等) intmult(inta,intb,intbase){ if((aint)与所有数据类型一样,实际上是以二进制形式存储的。通常,如果您查看内存(如调试器),它们会以十六进制形式表示。像int和float这样的类型仅由各种输出系统格式化为十进制 由于数据本身是二进制的,乘法已经是与基无关的。乘积的显示不是。例如,假设我有一些4位类型: 0010(2)X0100(4)=1000(8) 这就是C++已经工作的方式——只是用32或64位而不

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

intmult(inta,intb,intbase){

if((a
int
)与所有数据类型一样,实际上是以二进制形式存储的。通常,如果您查看内存(如调试器),它们会以十六进制形式表示。像
int
float
这样的类型仅由各种输出系统格式化为十进制

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

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

<>这就是C++已经工作的方式——只是用32或64位而不是4位。

这样,不需要函数来对不同的碱基进行不同的乘法。您需要的是显示不同碱基的函数。幸运的是,C++有几种选择。一种是STD的流标志:

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

std::cout已经适用于任何“基”。整数没有特定的“基”在它们自身中。只有当你转换成或转换成打印的表示形式时,基数才会出现。你确定吗?如果我的基数是基数4,而“a”和“b”是3,它会打印9,这不是基数4中的数字。这是对的。问题不在于乘法,因为答案仍然是9。问题是当你打印结果时,你是以10为基数打印(可能)。您需要问的问题是如何将结果转换为以4为基数的表示形式。哦,这很有意义,感谢您提供的类似(二进制编码的十进制)的输入?它可以称为十进制编码的东西?在这种情况下,您的示例并不完全正确,因为它不能正确处理进位,例如,在八进制
3*3
中,应该是
11
而不是
9
std::cout << std::oct << number << "\n";