十六进制计算:C反汇编器用1C减7

Hexadecimal calculation: 1C minus 7 for C disassembler

我的问题很简单,没有代码,只是一个计算。为什么 1C 减 7 等于 22 以 10 为基数,一个 22 字节的数组?

我正在开发 C 反汇编程序,我想对变量进行分组。所以最初我们有:

那将变成一个单一的变量:

我用十六进制计算的结果是15,我很困惑。

显示屏会显示每个项目的起始位置。

在第一个显示中:

  • var_1C 从偏移 −1C 开始;它占据位置 −1C、−1B、−1C 和 −1A。
  • var_18 从偏移量 −18 开始;它占据位置 −18 和 −17.
  • var_16 从偏移量 −16 开始;它占据位置−16.
  • var_15 从偏移量 −15 开始;它占据位置 −15、−14、−13 和 −12。
  • var_11 从偏移量 −11 开始;它占据位置 −11、−10、−F 和 −E。
  • var_D 从偏移量 −D 开始;它占据位置-D、-C、-B 和-A。
  • var_9 从偏移量 −9 开始;它占据位置-9和-8。
  • var_7 从偏移量 −7 开始;它占据位置-7.

计算上面占用的字节数是22个字节。它们是从 −1C 到 −7 的字节,包括在内。

在第二个显示中:

  • var_1C 从偏移 −1C 开始;它占据-1C到-7的位置。

这也是22字节

概括 Eric Postpischil 的回答,

For all Real numbers, the number of integers in the interval [n, m] is |(m - n)| + 1

方括号表示闭(含)区间。