【问题标题】:How does this hexadecimal arithmetic work?这个十六进制算术是如何工作的?
【发布时间】:2016-09-18 13:24:14
【问题描述】:

我正在学习 C 指针。我已经将双指针加了 1,如下所示:

之前 -> ptr_double =0x0128

然后我将它加 1,然后 ptr_double 中存储的地址增加 8 个字节,即0x0128 + 8 得到0x0130

我无法理解0x0130 的算术运算方式。

我知道这可能是一个基本问题,但我很难理解。有人可以向我解释一下吗?

【问题讨论】:

  • 简单的十六进制加法。计数如下:0x0129 ,0x012A 0x012B,0x012C,0x012D,0x012E,0x012F,0x0130

标签: c pointers hex


【解决方案1】:

我假设你有一个指向double 的指针,比如double* ptr_double;,它的值是0x128,然后你将它递增++ptr_double;(这使得指针跳转 为@987654326 @,在本例中为 8)。地址是十六进制的(以 16 为基数),所以

0x128 + 0x8 = 0x130

记住十六进制属于0,1,...,9,A,B,C,D,E,F范围,所以0x8 + 0x8 = 10

【讨论】:

  • 是的,你说得对,我的问题是我无法理解算术步骤,为什么它不能是 0x128 + 0x8 = 0x136
  • @VenVaru:你想在这里阅读:en.wikipedia.org/wiki/Hexadecimal
  • @vsoftco 你能解释一下吗?
  • 0x128 之后是0x129, 0x12A, 0x12B, 0x12C, 0x12D, 0x12E, 0x12F,然后是0x130。另请参阅@ARBY 的评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-10
  • 2013-10-30
  • 2013-01-11
  • 2014-04-09
  • 2011-04-21
  • 2016-05-09
  • 2023-02-20
相关资源
最近更新 更多