(c/c++)内存地址由什么来表示,为什么只显示八位数字(x86)?这个问题困扰了我好久,今天突然顿悟了(ง ˙o˙)ว

(众所周知),内存地址是由十六进制来表示的,为什么呢?

这里涉及一些进制转换的知识,比如:

  • 1011 0010转换成十六进制是从右到左,将二进制数每四位分为一组。如果最左边的组不足四位,则在左侧用零填充,直到达到四位。然后将每一组四位二进制数转换成相应的十六进制数,可以使用下表进行转换:

    | 二进制 | 十六进制 |
    | ------ | -------- |
    | 0000   | 0        |
    | 0001   | 1        |
    | 0010   | 2        |
    | 0011   | 3        |
    | 0100   | 4        |
    | 0101   | 5        |
    | 0110   | 6        |
    | 0111   | 7        |
    | 1000   | 8        |
    | 1001   | 9        |
    | 1010   | A        |
    | 1011   | B        |
    | 1100   | C        |
    | 1101   | D        |
    | 1110   | E        |
    | 1111   | F        |

  • 通过上表可以看出,将1011 0010分成两组,1011对应B,0010对应2,因此得到的十六进制数为B2。
  • 为什么不用八进制来表示呢,那我们来看看1011 0010转换成八进制是多少,要讲二进制转换成八进制,首先从左到右,将二进制数每三位分为一组。如果最左边的组不足三位,则在左侧用零填充,直到其达到三位,将每个三位二进制数转换成相应的八进制数,可以使用下表进行转换:
  • | 二进制 | 八进制 |
    | ------ | ------ |
    | 000    | 0      |
    | 001    | 1      |
    | 010    | 2      |
    | 011    | 3      |
    | 100    | 4      |
    | 101    | 5      |
    | 110    | 6      |
    | 111    | 7      |

  • 通过上表我们可以把1011 0010分为三组,010 110 010,分别对应2 6 2,因此1011 0010的八进制数为262,很明显比十六进制占用内存空间要大,因此八进制没有十六进制占用内存小

  • 那么十进制呢,二进制1011 0010转成十进制,首先从右往左,每一位上的数乘以2的m次方之和,m从0开始,依次+1,因此我们可以得出十进制为178,同理。

  • 小小总结一下,内存地址由十六进制来表示是因为十六进制占用存储空间最小,最方便,最直接。

那么内存地址为什么只显示八位数字呢,比如00FAF76C,这种数字

  • 首先,这串数字是随机的,由计算机随机分配,毫无规律

  • 我们可以通过指针的知识来解释,为了方便访问内存中内容,系统给每个内存单元(字节)一个编号,该编号成为地址,也就是指针,因此,笼统点说,地址就是指针,指针就是地址,指针内存一般占四个字节,64位操作系统是八个字节,所以说,定义一个变量,系统给他分配的地址就是四个字节,而一个字节等于八位,因此四字节等于32位,这个位都是二进制数,根据上面的二进制转成十六进制,可以知道,每四位二进制数转成一位十六进制数,最终结果就是32/4得到八位十六进制数


涉及知识:进制转换,指针基本概念

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落缨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值