首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何显示在8基(数字基数8?)中有4位表示的所有数字?

我如何显示在8基(数字基数8?)中有4位表示的所有数字?
EN

Stack Overflow用户
提问于 2020-03-22 19:21:20
回答 1查看 194关注 0票数 0

如果我知道怎么做的话,我会在这里加个代码。然而,我只有数字基的代码:

代码语言:javascript
运行
复制
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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-22 19:37:16

用四位数表示的最小八进制数是多少?以八进制为单位的4位数字代表的最大数字是多少?您可以手工计算出这一点,然后循环遍历这些值。

纸面上:

代码语言:javascript
运行
复制
1000_(base8) = X_(base10) // solve for X
7777_(base8) = Y_(base10) // solve for Y

在您的代码中,只需在这两个数字之间循环。这将输出从八进制1000到7777 (包括在内)之间的所有数字的八进制形式。

代码语言:javascript
运行
复制
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的无符号整数:

代码语言:javascript
运行
复制
int X = std::stoul("1000", 0, 8);

如果您想使用数学,那么您可以认识到,最小的base-n数占用m数字是n**(m-1),其中**表示指数(除了在边缘情况下,您有一个1位数,在这种情况下,可以表示的最小数字是0)。

占用m数字的最大m数是(n**m) - 1

在计算指数时,您可能会尝试使用pow。别干那事。这是浮点数。使用循环计算整数的n**m

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60803874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档