对于跨越多字节的程序对象,我们必须知道两个东西,一个是这个对象的地址是什么;另一个是存储器如何排列这些字节。
在几乎所有的机器上,多字节对象都被储存为连续的字节序列。假设一个类型为int的变量x的地址为0x100.那么,x的4个字节将被存储在存储器的0x100、0x101、0x102、0x103三位置。
排列表示一个对象的字节有两个通用的规则:
假设有一个w位的整数,每一位我们表示成[Xn-1,xXn-2,...X1,X0](n-1,n-2,1,0几个表示下标),其中Xn-1位是最高有效位,而X0位则是最低有效位。
假设w是8的整数倍,那么前面8为为最高有效字节,后面8位为最低有效字节。举个例子;
0x01234567 01表示最高有效字节,占一个字节,一个字节8位。 而67表示最低有效字节,占一个字节,一个字节8位。
而排列有两种规则就是最高有效位字节和最低有效字节所出的位置不一样。
最低有效字节在前叫做小端法,反之,叫做大端法。
Intel兼容机,大多数采用小端法排列字节顺序。
而IBM和Sun公司大多采用大端法排列字节顺序。
对于程序员来说,如何排列顺序是不可见的。不过有时候字节顺序会成为问题,比方说我们在传输网络数据的时候(幸好我们有网络标准)。
本文深入探讨了多字节程序对象的存储原理及字节顺序的两种通用规则:大端法与小端法。以Intel兼容机为例,解释了小端法在该平台上的应用,并对比了IBM和Sun公司普遍采用的大端法。同时,讨论了字节顺序可能带来的问题及其解决方式,如在网络数据传输中的应用。
823

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



