【发布时间】:2019-12-28 13:49:30
【问题描述】:
我只是想知道将十进制整数(由用户输入)转换为内存中 2 的补码表示的代码是什么。
示例:用户输入 1234 作为小数。我想在 AX 中存储 04D2(二进制 2 的补码表示)(因为我只允许使用字长字符串)
我使用的是 80x86 架构。
【问题讨论】:
-
嗯,04d2 不是二进制补码。它只是十六进制的数字 1234。您是否尝试将字符串解析为整数?
-
好吧,我的最终目标是从用户那里得到一个 16 位数字,将其转换为 2 的补码,然后找到它的八进制表示。我
-
您还需要处理负整数,还是只处理正整数?
-
负整数也是如此。我举了两个例子。 1234 的八进制表示是 004 322。-1 的八进制表示是 377 377。我了解他们为什么以及如何获得八进制表示,我只需要中间步骤说明他们如何在代码中从 1234 获得 04D2。
-
伪代码,适用于带有 ASCII 字符集的 kbd。你要弄清楚积极或消极的逻辑,因为它在这里会变得太局促。 :)
result = 0; while( (c = kbdRead) != '\n') { result *= 10; result += c - '0'(注意:我的头顶......)还要注意 2 的补码中的负数具有 MSB 集。