深入理解计算机操作系统(2.1.3)

寻址和字节顺序

对于夸多字节的程序对象,必须建立两个规则:

  • 对象的地址是什么
  • 内存中如何排列这些字节的

对象的地址:假设一个int变量占四个字节,该变量的地址为0x100,在C语言中地址表达式就是&x的值就是0x100,那么在内存中该变量占的地址就是0x100、0x101、0x102、0x103。总结就是夸多字节的对象的地址是该对象的所占地址的起始地址。

字节排序:内存中的字节排序分为两种,一种是小端法,最低有效字节在最前面;一种是大端法,最高有效字节在最前面。
假设变量x的类型为int,位于地址0x100处,十六进制为0x01234567。地址范围是0x100-0x103,分别用小端法和大端法表示:
这里写图片描述

使用不同的机器字节顺序可能不同,这样会产生三个问题:

  • 小端法机器产生的数据发送到大端法或者反过来时,接受程序会发现,字里的字节成了反序的。为了避免这类问题,网络应用程序的代码编写必须遵守已建立的关于字节顺序的规则,以确保发送方机器将它的内部实现转化成网络标准,而接收方机器则将网络标准转为内部表示。
  • 当阅读表示整数数据的字节序列时,字节顺序也很重要,因为从当检查机器级代码时,如果机器的字节顺序小端法表示的,那么阅读时就应该从右往左读,这样拿到的才是正确的数据。
  • 第三种情况是当编写规避正常类型的类型系统的程序是。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值