【问题标题】:15. The numbers are of type DWORD and the product (8EB50h - 290ADCFFh )*2939Ah = N16 =15. 数字为 DWORD 类型,乘积 (8EB50h - 290ADCFFh )*2939Ah = N16 =
【发布时间】:2016-03-24 21:59:47
【问题描述】:
  1. 数字是 DWORD 类型和乘积

(8EB50h - 290ADCFFh )*2939Ah = N16 =

谁能解释一下如何用 DWORD 十六进制减法?

我想知道,因为当我正常减去时,我得到一个负数。但我不能用负数作为答案。

【问题讨论】:

  • 与任何基础相同。或者,如果你不舒服,那么转换成十进制,执行操作并转换回来。
  • 我想知道,因为当我正常减去时,我得到一个负数。但我不允许有一个负数作为答案。
  • 290ADCFF 显然比 8EB50 大很多,所以减法会得到负数。
  • 我必须以某种方式转换为非负数,这是我想要弄清楚的
  • 负数表示为two's complement,简而言之,这意味着您需要将 2^32 添加到负数并进行转换。

标签: assembly hex


【解决方案1】:

此链接可能有用Hexadecimal Arithmetic。其中规定:

十六进制减法

十六进制数的减法遵循与 任何其他数字系统中的数字减法。唯一的变化 是借来的号码。在十进制中,你借一组 10(以 10 为基数)。在二进制系统中,您借用一组 10(以 2 为底)。 在十六进制系统中,您借用一组 10(以 16 为基数)。

4A6 - 1BC

6 - C,需要借用 10,所以有效 16 - C = A

4A0 - 借来的 10 = 490,所以现在有效的是 49 - 1B。

9 - B,需要 借用 10,所以实际上是 19 - B = E

40 - 借来的 10 = 30,所以 现在有效地 3 - 1 = 2。所以答案 = 2EA

【讨论】:

  • 我个人有古老的卡西欧 FX-45M 计算器。涵盖二进制、十六进制和八进制。
  • 0x4A6 - 0x1BC0x2ea。你的步骤是对的;看起来只是一个错字。
  • @PeterCordes,抱歉已更正,现在转给配镜师 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-30
  • 2016-02-01
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
  • 2014-08-04
  • 2023-02-06
相关资源
最近更新 更多