【问题标题】:Binary to decimal exercise at school学校的二进制到十进制练习
【发布时间】:2018-04-05 21:44:09
【问题描述】:

所以我们在学校学习 c++,老师告诉我们编写一个程序,将二进制数转换为十进制数。

这是我在 main 中写的:

int i = 0, e = 0,n = 00001111 , c;
while (n > 0)
{
    cout << "n= " << n << endl << "e= " << e << endl;

    c = n % 2;
    n = n / 10;
    if (c == 1)
    {
        e = e + (int)pow(c * 2, i);
    }
    i++;
}
cout << e << endl;

system("pause");

输出是 here

我的问题是为什么当我写 00001111 时 n=585?

如果标签具有误导性,也很抱歉。我是新手。

【问题讨论】:

  • 已经做了,但是 n 的值是 585,第二次我在声明它时给它一个值。我对调试器的经验也不是很丰富。
  • 00001111 是八进制,而不是十进制。
  • 所以编译器将 00001111 读取为八进制?它应该是一个 8 位二进制数,但写成十进制,因此可以除以 10。有没有办法强制编译器将值读取为十进制?
  • 如果您的编译器与 c++14 兼容,您可以点击我的答案中包含的链接并使用符号:0b1111

标签: c++ visual-c++ binary decimal


【解决方案1】:

八进制的00001111等于十进制的585。

http://en.cppreference.com/w/cpp/language/integer_literal

注意你的前导零!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-15
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 1970-01-01
    • 2015-01-21
    相关资源
    最近更新 更多