如果我有任何想法,请在此处输入代码。但是,我仅具有数字基的代码:
using namespace std;
int n,i,s,rest,cat;
int main()
{
cin>>n;
s=0;
i=1;
while(n>0)
{
rest=n%8;
cout<<"rest: "<<endl<<rest<<endl;
cat=n/8;
cout<<"cat: "<<endl<<cat<<endl;
s=s+rest*i;
cout<<"s: "<<endl<<s<<endl;
i=i*10;
cout<<"i: "<<endl<<i<<endl;
n=cat;
}
cout<<"s="<<s;
return 0;
}
八进制的4位数字代表的最小数字是多少?八进制数由4位数字代表的最大数字是多少?您可以手动解决此问题,然后遍历所有值。
在纸上:
1000_(base8) = X_(base10) // solve for X
7777_(base8) = Y_(base10) // solve for Y
然后在您的代码中,只需在这两个数字之间循环。这将输出八进制数1000和八进制数7777(包括八进制)之间的所有数字的octal形式。
std::cout << std::oct; // set all integer outputs on std::cout to octal
for (unsigned int i = X; i <= Y; i++)
std::cout << i << "\n";
std::cout << std::dec; // set it back to decimal
您需要#include <iomanip>
才能使用流格式说明符std::oct
。
如果您希望程序从字符串中计算任意八进制数,则可以使用std::stoull
。这给出了代表八进制数1000的无符号整数:
std::stoull
[如果要使用数学,那么您可以识别出占用int X = std::stoul("1000", 0, 8);
位的最小base-n
数字是m
,其中n**(m-1)
表示幂(在边缘情况下,如果您有1位数字,在这种情况下,可以表示的最小数字是**
)。
占用0
位的最大base-n
数字是m
。
计算指数时,您可能会倾向于使用(n**m) - 1
。不要那样做那是浮点数。使用循环计算整数的pow
。