【发布时间】:2020-11-17 17:33:54
【问题描述】:
我了解到诸如int 和long long 之类的数字类型在C++ 中以基数为二的格式存储。可以使用按位运算符访问和修改这些单独的位。
但是,我最近想知道为什么没有以 2 为底的 std::cout 将数字打印到屏幕上,并认为它们必须在打印之前转换为以 10 为底的数字。换句话说,由于std::cout 以 10 为底输出这些数字,我认为必须进行一些转换过程才能将这些数字从以 2 为底的数字转换为以 10 为底的数字。
总的来说,我的问题是,std::cout 是否实际上将数字从 2 转换为 10,它是如何做到的?我在这里犯了其他逻辑错误吗?
【问题讨论】:
-
你没有转换数字本身,只是生成一个表示。对于整数,这很容易,您可能会自己弄清楚。
-
轻微修正:您计算机中的一切都以二进制表示形式存储在内存或存储器中。字符、字符串、整数、浮点值、图像、复杂对象。如果它在内存中,则以 1 和 0 的形式存储。
-
如何用笔和纸将 base 2 转换为 base 10?
-
如何用笔和纸将base 10转换为base 2?就是这样。