计算机内存存储与算术运算解析
1. 内存数据查看与字节存储顺序
在调试过程中,我们可以使用 gdb 来查看内存中的数据。例如:
(gdb) x/10c 0x7fffffffde8e
0x7fffffffde8e: 49 '1' 50 '2' 51 '3' 97 'a' 98 'b' 99
'c' 0 '\000' 127 '\177'
0x7fffffffde96: 0 '\000'
0 '\000'
(gdb) x/10xb 0x7fffffffde8e
0x7fffffffde8e: 0x31 0x32 0x33 0x61 0x62 0x63
0x00 0x7f
0x7fffffffde96: 0x00 0x00
字符显示会展示每个字符的十进制码点和字符字形,而十六进制字节显示仅展示每个字节的十六进制码点。这里的两个显示都显示了标记我们输入的六个字符字符串结尾的 NUL 字符。由于我们要求显示 10 个字节,剩余的 3 个字节具有与我们的文本字符串无关的随机值,通常称为垃圾值。
1.1 字节存储顺序(Endianness)
整数在内存中的存储方式有两种,即大端序(Big-Endian)和小端序(Little-Endian)。
1.1.1 小端序(Little-Endian)
在小端序中,多字节值中最不重要的字节存储在最低编号的地址。也就是说,“最小”的字节(计数最少)在内存中排在第一位。
超级会员免费看
订阅专栏 解锁全文
9

被折叠的 条评论
为什么被折叠?



