1、获得a在内存中的地址
print /x &a
2、查看内存中的值
可以看到a在内存中的地址为0x62fe1c
x /32bc 0x62fe1c
可看到内存0x62fe1c处存储的值为10(竟然是十进制显示的),后面单引号中的内容应该是按照编码翻译的字符(这个应该是GB2312)
分析:
第一行地址为0x62fe1c,第二行地址为0x62fe24
0x62fe24-0x62fe1c=0x000008,一行8个字节,可看到每行刚好有8个数,说明每个数是一个字节
a是int类型,故a应该占4个字节的位置,从图中看出低字节在前面,说明是小端存储,真正的顺序应该是0 0 0 10(十进制)
第一行有-96 -88这样的数,故猜测此处显示的十进制数是将1字节数据当作有符号整数转换为十进制得到的
验证分析:
令int a=-2,a的补码是1111 1111 1111 1111 1111 1111 1111 1110
十六进制:0xfffffffe,小端存储:fe ff ff ff
小端存储(十进制,有符号):-2 -1 -1 -1
从图中可看到,试验结果与我们的推导相符合,验证成功
标签:小端,字节,内存,Dev,1111,C++,十进制,0x62fe1c From: https://www.cnblogs.com/FishSmallWorld/p/17074055.html