大小端
来源:互联网 发布:淘宝开店策划方案 编辑:程序博客网 时间:2024/03/28 22:46
我们知道在内存中数据是以字节为单位进行存储的,每个地址单元对应着一个字节(byte),一个字节为8位(bite)。但是很多时候数据除了8bit额char外,还有16bit的short,32位的long型(要看具体的编译器),必然存在多字节安排的问题。不同的计算机存放多字节值的顺序不同,有些机器在起始地址存放低位字节(低位先存),即小端模式;有的机器在起始地址存放高位字节(高位先存),即大端模式。基于Intel的CPU,采用的是低位先存。而KEIL C51则为大端模式。大端小端对应着数据在存储器中的存放顺序。
同时,在网络传输中,网络协议需要指定网络字节顺序,TCP/IP协议中使用16位整数和32位整数的高位先存模式,对应我们的大端模式。
下面是两个具体例子:
16bit宽的数0x1234在Little-endian模式(以及Big-endian模式)CPU内存中的存放方式(假设从地址0x4000开始存放)为:
32bit宽的数0x12345678在Little-endian模式以及Big-endian模式)CPU内存中的存放方式(假设从地址0x4000开始存放)为:
内存地址小端模式存放内容大端模式存放内容0x40000x780x120x40010x560x340x40020x340x560x40030x120x78联合体union的存放顺序是所有成员都从低地址开始存放,利用该特性可以轻松地获得了CPU对内存采用Little-endian还是Big-endian模式读写。
写程序判断处理器是Little-endian模式,还是Big-endian模式,可以通过以下程序:
1>.通过将int强制类型转换成char单字节,通过判断起始存储位置。
0 0
- 大小端
- 大小端
- 大小端
- 大小端
- 大小端
- 大小端
- 大小端
- 大小端
- 大小端
- 大小端
- 大小端
- 大小端
- 大小端
- 大小端
- 大小端
- 大小端
- 大小端
- 大小端
- C语言的内存管理
- 注入的两种方式
- 网台开发笔记
- jquery 日期插件
- Attempt to insert non-property list object - 芒果iOS
- 大小端
- 学了一个递归
- 常用的32个算法
- EasyPlayer RTSP/RTMP/HTTP/HLS全功能播放器
- 端口被占用如何解决
- C语言文件读写基本操作DEMO
- 用 PyInstaller 把python程序 .py转为 .exe 可执行程序
- 图像处理之gamma矫正
- linux中shell截取字符串方法总结