内存地址空间为何用十六进制表示(pamp分析基础)

内存地址空间与十六进制。

1应用场景:pamp

在gdb 或者pmap查看内容的时候经常出现 如下  0x8462960,0x8462960含义是啥

例如

wang@ubuntu:~/study/code$ pmap -d 1468 >>aaa
wang@ubuntu:~/study/code$ vi aaa
1468:   ./server
Address   Kbytes Mode  Offset           Device    Mapping
00110000     116 r-x-- 0000000000000000 008:00001 libgcc_s.so.1
0012d000       4 r---- 000000000001c000 008:00001 libgcc_s.so.1
0012e000       4 rw--- 000000000001d000 008:00001 libgcc_s.so.1
00142000    1380 r-x-- 0000000000000000 008:00001 libc-2.11.1.so
0029b000       8 r---- 0000000000159000 008:00001 libc-2.11.1.so
0029d000       4 rw--- 000000000015b000 008:00001 libc-2.11.1.s

 

0x8462960 是 内存地址空间是.

十六进制的表示:
C语言、Shell、Python语言及其他相近的语言使用字首“0x”,例如“0x5A3”。开头的“0”令解析器更易辨认数,而“x”则代表十六进制(就如“O”代表八进制)。在“0x”中的“x”可以大写或小写,0-9对应0-9;A-F对应10-15;N进制的数可以用0---(N-1)的数表示超过9的用字母A-F。

 

2 具体说明:内存地址空间为何用十六进制表示

编程中,我们常用的还是10进制.毕竟C/C++是高级语言。   

比如:int a = 100,b = 99;   

不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决 问题。但二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是:   

0000 0000 0000 0000 0110 0100   

面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C++ 没有提供在代码直接写二进制数的方法。用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。

 

 
参考:
http://www.cnblogs.com/liuzhendong/archive/2011/10/17/2215632.html


十六进制
http://baike.baidu.com/view/230306.htm

理解C指针: 一个内存地址对应着一个值
http://www.cppblog.com/hex108/archive/2011/06/18/124234.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值