【发布时间】: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