我如何显示所有以8位为底数(以8为底的数字?)的4位数字?

问题描述 投票:0回答:1

如果我有任何想法,请在此处输入代码。但是,我仅具有数字基的代码:

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;
}
c++ numeric digits
1个回答
1
投票

八进制的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

© www.soinside.com 2019 - 2024. All rights reserved.