C语言中的地址算法

  

    在C语言学习当中,我们常常会与地址打交道,那么到底什么是地址呢?

    在计算机运行时,数据会存放在内存中,内存会以字节为单位划分为多个存储空间,并且为每个字节默认设置一个对应的编号,这个编号就是地址。

    存储单位的大小是1字节(1Byte),每1B存储空间被编上一个地址,1B=8bit(比特),1bit=1个二进制位。

    二进制算法与十进制相似,不过变成了满二进一,而二进制与十进制之间也可以转换。从右往左看,依次为2的0次方,2的一次方......转换成十进制数则是每一位上的数字乘以对于的2的次方,如图,转换成十进制数则为1*2的0次方+1*2的1次方+0*2的2次方+1*2的3次方+0*2的4次方+0*2的

5 次方+1*2的6次方,即为75。

     在地址表示中,我们常常将四个二进制位看成一个整体,如1111,而像四位数的二进制表达数有16种情况(0000,0001,0002....),于是我们就用十六进制来表达这么一个数,选择的编译器不同显示的位数就不同,常用的32编译器就是8个16进制数,而64位编译器就是16个16进制数,在十六进制中,我们有这种关系,0~9表示0~9,A~F表示10~15。

    在地址表达中0x表达的意识就是这串数字是16进制的数,而0表示8进制。那么对与地址的计算就不复杂了。在日常代码中,我们要运用到各种变量类型,而各种数据类型都有各自占有大小。

 

 

 因为一个int整型元素的大小是4个字节,而一个字节用一个地址,所以每两个相邻元素之间地址相差4,

 

 

我们不妨测试一下,如图,我们可以看到1,2,3的地址分别是004FF9CC,004FF9C0,004FF9B4,因为C在16进制中表示12,因为int类型之间差4,所以C+4=16,所以进一位,则为0。(提示:地址是随机生成的,但地址生长方向始终是从上往下,从高地址到低地址的。)

 

 总之,地址的计算还是比较简单的,理解到十六进制的一些字母表达,和计算规律(int相差4等等),都可以理解。希望这篇文章对你有所帮助!!!

 

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值