持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第14天,点击查看活动详情
时隔半个月,中间断更了深入理解计算机的部分,更新了关于测试的文章,今天继续深入理解计算机4来讲解后面的内容-寻址和字节顺序。
对于跨越多字节的程序对象,我们需要清楚两个概念:这个字节对象的地址是什么?我们应该如何在存储器中对这些字节对象去排序?
1.其实在大部分机器上,多字节对象储存形式都是连续的字节序列,这个对象的地址就是字节中最小的字节序列地址,可能这么说还是有些人不够明白,为了帮助我们更好的理解这里我举一个例子:
- 假设一个整形的变量x的地址为0x101,变量x的四个字节分别储存在0x101,0x102,0x103,0x104地址上,显而易见x的最小地址就是0x101,而这个字节对象其实就是这个变量x。
这么一讲这个对象的地址就是字节中最小的字节序列地址这句话肯定就是理解透彻了,那么第一个问题自然就是解了,接下来就是看一下第二个问题,字节排序:
2.字节对象有两种排序方式,分别是大端法和小端法,下面我将在实例中来讲解一下大端法和小端法:
- 假设一个整数有w位且为8的倍数的字节对象,表示为[Xw-1,Xw-2,...,X1,X0],最高有效位是Xw-1,最低有效位是X0,其中最高有效字节为[Xw-1,...,Xw-8],最低有效位是[X7,...,X0],中间的位被其他字节占据,对于这个对象,用大端法表示为:[Xw-1,...,Xw-8],...,[X7,...,X0];用小端法表示为[X7,...,X0],...,[Xw-1,...,Xw-8]。这样举例下来大端法和小端法怎么去排序就很清晰了。
总结:
这一节其实就是回答了开头提出的两个问题,字节的寻址和排序,内容总结如下:
(1)多字节对象地址:所使用字节序列中最小的地址;
(2)大端法:从最高有效字节到最低有效字节排序;
(3)小端法:从最低有效字节到最高有效字节排序;