Windows 7 上的 MS 计算器。我需要知道它是如何操作的
Windows 7 上的 MS 计算器有一个“程序员”模式。当我输入(二进制):1111111111111111111111111111111111111111111111111111111111111111
然后单击“Dec”时,二进制变为-1。当我点击 Oct 时,该值变成 1777777777777777777777
但是,每当我使用在线转换器时,它都不起作用。我需要知道计算器是如何做到这一点的,以便我可以在 C++ 中模拟它。
MS calculator on windows 7 has a "programmers" mode. When I type in (in binary): 1111111111111111111111111111111111111111111111111111111111111111
and then click "Dec", the binary turns into -1. When I click Oct, the value turns into
1777777777777777777777
However, whenever I use an online converter, it doesn't work. I need to know how the calculator is doing this so I can emulate it in c++.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
它使用 64 位二进制补码表示法。基本上,当您向
2^63 - 1
添加 1 时,它会溢出并得到-2^63
。 维基百科了解更多详细信息It is using 64 bit two's complement notation. Basically, when you add one to
2^63 - 1
, it overflows and you get-2^63
. Wikipedia for more detail听说过 2s 补码吗?这一切都取决于(逻辑上取决于二进制数的长度)。但是,硬件允许您一次处理一个字。
Ever heard of 2s complement? It all depends (logically on the length of the binary number. Hardware lets you work with one word at a time, however.
当您将其切换为十进制时,它正在执行二进制补码。在八进制形式中,它正在进行直接转换。
It's doing two's complement when you switch it to decimal. In octal form, it is doing a straight conversion.