Windows 7 上的 MS 计算器具有“程序员”模式。当我输入(二进制)时:11111111111111111111111111111111111111111111111111111111111111
然后点击“Dec”,二进制变成-1。当我点击 Oct 时,该值变为 17777777777777777777777
但是,每当我使用在线转换器时,它都不起作用。我需要知道计算器是如何做到这一点的,以便我可以在 c++ 中模拟它。
它使用 64 位二进制补码表示法。基本上,当您将 1 添加到 时2^63 - 1
,它会溢出并得到-2^63
. 维基百科了解更多详情
听说过 2s 补码吗?这一切都取决于(逻辑上取决于二进制数的长度。但是,硬件允许您一次使用一个单词。
当您将其切换为十进制时,它正在执行二进制补码。在八进制形式中,它进行直接转换。