【CSAPP读书笔记】2.01 系统中的信息存储

(1)大多数计算机使用字节作为最小的可寻址单位,而非访问内存中单独的位。
(2)从机器级程序视角而言,内存可以视为一个非常大的字节数组(虚拟地址空间)。

字长

  每台计算机都有一个字长,指明指针数据的标称大小(即一个指针数据有多少位)。虚拟地址是以这样的位来编码的,因此字长直接决定虚拟地址空间的大小。对于字长位w的机器而言,程序最多可以访问**2w**字节的内存空间

gcc可以使用 -m32  -m64选项选择目标程序运行的平台

  在32位和64位的机器上,字长主要影响long类型和指针类型的数据长度
C基本数据类型的典型大小

C99往后的标准可以使用int32_t、int64_t等 指示符实现固定长度的类型声明

明确指定变量类型长度是实现可移植性的一个重要因素。

字节顺序

  超过8位的数据需要存放在内存的不同字节中,由此引申出大端序小端序的概念。
**大端序:**将变量中高位数据存储在内存地址较小的位置。
**小端序:**将变量中地位数据存储在内存地址较小的位置。

  以十进制表示时,1234中,1是千位,2是百位,3和4分别是十位和个位,因此1是变量中的高位,4是变量中的低位。
  十六进制表示时,0xABCD中A高位,D是低位。数值表示时,高位在左侧,低位在右侧。有时候会有资料直接用16进制字符串直接表示内存内容,此时需要根据大小端序去仔细还原原始数据。

大小端序变量存储
  大多数Intel兼容机器只支持小端模式,另一方面,IBM和Orcale的大多数机器使用大段模式,而其制造的个人电脑大多是使用的是小端模式。许多比较新的处理器都使用双端法

实际上,使用大端序和使用小端序由选定的操作系统而定。程序员在进行编程时,字节顺序是不可见的,但是在进行网络通信时,不同的字节序决定了不同的装包以及解包算法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值