1-2字节顺序

字节顺序

字节存储顺序分为大端存储,小端存储
大端存储,是将数据的低位字节放到高地址处,高位字节放到低地址处。
小端存储,是将数据的低位字节放到低地址处,高位字节放到高地址处。
具体讨论字节顺序之前,我想先明白两个概念

1.内存地址高低

所谓高地址和低地址在内存中究竟是怎样表示的

0x04000003
0x04000002
0x04000001
0x04000000

问1:对于0x04000000到0x04000003那个是相对更高的地址?

答1:0x04000003是相对更高的地址,因为为了方便管理内存,人为给内存进行编号,值较大的地址是高地址,值较小的地址是低地址 。

2.数据字节的高低位

书中给了一个32位的整数0x12345678

问2:0x12的部分表示高位,还是0x78的部分表示高位?

先不急着回答这个问题,这个32位的整数是十六进制的,我们想一个十进制的 。

问3:12345678中那个是最高位,那个是最低位?

答3:显然1是最高位,是千万位,8是最低为,是个位。

我们都知道12345678可以表示为110000000+21000000+3100000+410000+51000+6100+710+81
那现在谁是高位,谁是低位就很明白了吧。

答2:0x12的部分表示高位

大小端存储示例

0x12345678他在内存中占用四个字节,现有两种内存存放方式:
第一种;
内存地址 数值
0x04000003 0x78
0x04000002 0x56
0x04000001 0x34
0x04000000 0x12
第二种
内存地址 数值
0x04000003 0x12
0x04000002 0x34
0x04000001 0x56
0x04000000 0x78

问4:上诉两种数据在内存中的存放方式分别是什么?

答4:第一种是高位数据存放在低地址,低位数据存放在高地址,属于大端存储;第二种是低位数据存放在低地址,高位数据存放在高地址,属于小端存储

大端小端指的是什么

我在思考small endian和big endian在取名时是从什么角度来说明的。

计算机数据读取顺序

问:计算机数据读取顺序是什么,是从哪里开始读取一个数据,本例来看,是从0x04000000开始读取还是从0x04000004开始读取。大端存储和小端存储在读取顺序上有什么不同!
答:无论是大端存储还是小端存储都是从低地址开始读,区别只在于,低地址存放数据顺序不同。
注:读取顺序与存储顺序是两个不同的概念。

最后解答大小端

大端存储和小端存储指的是数据字节的高位和低位。
如果计算机采用大端存储,则高位字节数据存储在低地址。
如果计算机采用小端存储,则低位字节数据存储在低地址。

代码练习

touch practice1.c

首先用touch命令创建一个c程序
在这里插入图片描述
用nano编辑器(如果有好用的编辑器,求推荐)打开practice1.c在这里插入图片描述
编辑代码
在这里插入图片描述
用gcc 编译
在这里插入图片描述
在这里插入图片描述
运行该文件
在这里插入图片描述
输出A,说明该ubuntu的cpu采用的是小端存储,低位数据存储在低地址。
在这里插入图片描述

注:诸位站友如有所收获不如点个免费的赞,如有错误之处或有其它补充的点,请在评论区发表你的观点,看到必回。

  • 22
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值