当前的存储器,多以byte为访问的最小单元,当一个逻辑上的地址必须分割为物理上的若干单元时就存在了先放谁后放谁的问题,于是端(endian)的问题应运而生了,对于不同的存储方法,就有大端(big-endian)和小端(little- endian)两个描述。

字节排序按分为大端和小端,概念如下

大端(big endian):低地址存放高有效字节

小端(little endian):低字节存放地有效字节

现在主流的CPU,intel系列的是采用的little endian的格式存放数据,而motorola系列的CPU采用的是big endian,ARM则同时支持 big和little,网络编程中,TCP/IP统一采用大端方式传送数据,所以有时我们也会把大端方式称之为网络字节序。

特别需要注意的是,C/C++语言编写的程序里数据存储顺序是跟编译平台所在的CPU相关的,而 JAVA编写的程序则唯一采用big endian方式来存储数据。这里我就只讨论C/C++语言的情况。

1.大端和小端的方式及判断

举个例子说明,我的机子是32位windows的系统,处理器是AMD的。对于一个int型数0x12345678,为方便说明,这里采用16进制表示。这个数在不同字节顺序存储的CPU中储存顺序如下:

0x12345678   16进制,两个数就是一字节

高有效字节——>低有效字节: 12 34 56 78

          低地址位     高低址位

大端:  12  34        56   78

小端: 78  56        34   12

#include<stdio.h>

int main(void ){
unsigned int x =0x12345678;
unsigned char *p = (unsigned char *)&x;
printf("%0x %0x %0x %0x",p[],p[],p[],p[]);
return ;
}

   --------------鸣谢(NULL)作者,本篇文章只供自己学习,若原始作者能够有建议,请邮件通知本人删除!

最新文章

  1. Nuget很慢,我们该怎么办
  2. 用js刷题的一些坑
  3. C#写文本日志帮助类(支持多线程)
  4. c# 读取IntPtr 中的数据 z
  5. PHP实现微博的同步发送(转)
  6. Oracle不能导入空表解决方案
  7. .NET 微信开放平台接口(接收短信、发送短信)
  8. ubuntu17 安装中文输入法
  9. OGNL详解
  10. 火狐l浏览器所有版本
  11. git reset的用法
  12. noi.openjuge 2.6.90
  13. vue中的路由高亮
  14. 二十二、Spring MVC与Structs2的区别总结
  15. YII2常用知识点总结
  16. 转 移动端-webkit-user-select:none导致input/textarea输入框无法输入
  17. 【Codeforces858F】Wizard&#39;s Tour [构造]
  18. 【php】基础学习3
  19. 如何玩转Android远控(androrat)
  20. Agc003_D AntiCube

热门文章

  1. C语言实现数组快速排序(含对算法的详细解释)
  2. &lt;转&gt;如何改变讨好型人格 | 你根本不需要讨好任何人
  3. jquery之html(),text()方法详解
  4. 表生成器@ TableGenerator
  5. CSS笔记(十三)CSS3之过渡
  6. WdatePicker.js 日历点击时,触发自定义方法 ,可以调用自己的函数。
  7. Log4j XML 配置
  8. 常用的jquery
  9. LCD控制器与驱动器
  10. poj2826An Easy Problem?!