我们都知道,内存中存储的是各种变量,各种奇葩东西,不用的变量占用不用的字长,例如在intel X86环境下,一个int占用两个字

0

1

2

3

4

5

6

7

8

9

0x30

0x31

0x32

0x33

0x34

0x35

0x36

0x37

0x38

0x39

节,即16位。然后在这16位上用0或1来表示这个int类型的变量到底是什么数值。那么这样就有两种写法了,在这16位上是从左往右写呢,还是从右往左写呢。这就好比现代人写字从左往右,古人写字从右往左。根据这样两种不同的写法,计算机中就产生了两种模式:小端模式和大端模式。具体来看一个例子:

假设在intel X86环境下,有一个数字,是1539,用二进制就表示为:0000 0110 0000 0011(两个字节)

高八位

低八位

0000 0110

0000 0011

既然计算机以字节为单位,如果这里的一个字节相当于写一个汉字的话,那这个1539在计算机内部就相当于要写两个汉字。怎么写呢,不着急,先介绍

小端模式:按照从低地址到高地址的顺序,依次存放数据的低字节到高字节。

高八位

低八位

小端模式:

0000 0110

0000 0011

插入一句:一个数的原数,是高字节在左,低字节在右,当然是这样,因为左边的权值高,2的次方高。学习本篇的时候,要始终记住吧一个个字节作为一个个单位,而不要着眼于位。

我这里高八位标在左边,低八位标在右边,很多地方低八位标左,高八位标右,这个其实是完全一样的,怎么看得舒服就怎么写。

按照定义,低地址放低字节,高地址放高字节,所以低八位放1539的低字节,高八位放1539的高字节。

接下来是

大端模式:按照从低地址到高地址的顺序,依次存放数据的高字节到低字节。

高八位

低八位

大端模式:

0000 0011

0000 0110

现在再回头看看,不过就是正着写反着写而已。╮(╯_╰)╭

一般来说,x86 系列 CPU 都是小端模式的字节序,PowerPC 通常是大端模式字节序,还有的CPU能通过跳线来设置CPU工作于小端模式还是大端模式模式。基本上要考察都是intel x86 x64环境,都是小端模式,不会那么坑考冷门的大端模式。。

练习:

0x1234abcd

低地址              高地址

小端模式:0xcd  0xab  0x34  0x12

大端模式:0x12  0x34  0xab  0xcd

写出下列程序的执行结果

#include

main()

{

char*sz="0123456789";

int*p=(int*)sz;

printf("%x\n",*++p);

}

答案是37363534

'0'

'1'

'2'

'3'

'4'

'5'

'6'

'7'

'8'

'9'

0x30

0x31

0x32

0x33

0x34

0x35

0x36

0x37

0x38

0x39

int *p = (int*)sz; 这句话的意思是说把这块内存当做int来对待。可以这样理解,数据就在内存中摆着,就看你当成什么来用了。

不管32位还是64位,int都占四个字节,printf那边有个++p,这个p是int型的指针,所以按照int的大小走四个字节

即现在p指向的是:

'0'

'1'

'2'

'3'

'4'

'5'

'6'

'7'

'8'

'9'

0x30

0x31

0x32

0x33

0x34

0x35

0x36

0x37

0x38

0x39

这块内存区域。还记得吗,用的是小端模式,那这个int变量该怎么写?

很明显是:0x37363534(低地址存低字节)

所以用%X输出的话就看到了37363534这个结果了。

写出下列程序执行结果

inta=0x12345678;

char*p=(char*)(&a);

printf("%x\n",*(p+1));

答案是0x56

判断计算机是大端还是小端:

inti=1; char*p=(char*)&i; if(*p==1) printf("小端模式"); else// (*p == 0) printf("大端模式");

linux分析字节序的分类及特点,计算机中的字节序详解 分类: 【Linux/Windows操作系统】 2015-01-07 21:54 97人阅读 评论(0) 收藏...相关推荐

  1. 金融风控--申请评分卡模型--特征工程(特征分箱,WOE编码) 标签: 金融特征分箱-WOE编码 2017-07-16 21:26 4086人阅读 评论(2) 收藏 举报 分类: 金融风

    金融风控-->申请评分卡模型-->特征工程(特征分箱,WOE编码) 标签: 金融特征分箱-WOE编码 2017-07-16 21:26 4086人阅读 评论(2) 收藏 举报 分类: 金融 ...

  2. TensorFlow损失函数(loss function) 2017-08-14 11:32 125人阅读 评论(0) 收藏 举报 分类: 深度学习及TensorFlow实现(10) 版权声明:

    TensorFlow损失函数(loss function) 2017-08-14 11:32 125人阅读 评论(0) 收藏 举报  分类: 深度学习及TensorFlow实现(10)  版权声明:本 ...

  3. C语言中的static 详细分析 2014-10-11 15:15 143人阅读 评论(0) 收藏...

    转自:http://blog.csdn.net/keyeagle/article/details/6708077 看到这篇文章针对C语言的static关键字解释的比较好,这里转载过来.谢谢原作者分享. ...

  4. Linux命令学习手册-tr命令 2015-07-26 20:35 9人阅读 评论(0) 收藏...

    tr [OPTION]... SET1 [SET2] [功能] 转换或者删除字符. [描述] tr指令从标准输入设备读取数据,经过字符串转译后,输出到标准输出设备. 通过使用 tr,您可以非常容易地实 ...

  5. YUM更换源(1)--yum找不到安装包 2013-01-18 20:08 8687人阅读 评论(1) 收藏 举报 分类: linux(70) 公司提供的CentOS VM中,/etc/yum.r

    YUM更换源(1)--yum找不到安装包 2013-01-18 20:08 8687人阅读 评论(1) 收藏 举报 分类: linux(70) 公司提供的CentOS VM中,/etc/yum.rep ...

  6. 怎样写一个简单的操作系统?(原文标题:How to write a simple operating system) 分类: 翻译 2011-01-26 01:10 3175人阅读 评论(3) 收藏

    怎样写一个简单的操作系统?(原文标题:How to write a simple operating system) 分类: 翻译2011-01-26 01:10 3175人阅读 评论(3) 收藏 举 ...

  7. Python实现基于朴素贝叶斯的垃圾邮件分类 标签: python朴素贝叶斯垃圾邮件分类 2016-04-20 15:09 2750人阅读 评论(1) 收藏 举报 分类: 机器学习(19) 听说

    Python实现基于朴素贝叶斯的垃圾邮件分类 标签: python朴素贝叶斯垃圾邮件分类 2016-04-20 15:09 2750人阅读 评论(1) 收藏 举报  分类: 机器学习(19)  听说朴 ...

  8. 莫名其妙的Parse error: syntax error, unexpected $end 分类: php相关 2008-12-17 20:25 7086人阅读 评论(3) 收藏 举报 phpg

    莫名其妙的Parse error: syntax error, unexpected $end 分类: php相关 2008-12-17 20:25  7086人阅读  评论(3)  收藏  举报 p ...

  9. linux中initrd的含义,详解畅谈Linux initrd系统

    Linux initrd有很多值得学习的地方,这里我们主要介绍Linux initrd,包括介绍nash等方面,Linux initrd 讲究了很多重要的事情,init的执行在这里分为以下几部操作,请 ...

最新文章

  1. 玩转数据结构从入门到进阶四
  2. Core Dump流程分析
  3. 微信平台开发1--开发者模式基本配置
  4. mysql的jdbc版本_【jdbc】Mysql 8版本jdbc设置
  5. 从实战中了解数据开发全流程——DataWorks OpenAPI实战
  6. 【SQL Server 2017】18456错误/管道的另一端无任何进程错误 解决方法
  7. Pentium II Pentium III架构/微架构/流水线 (1) - 架构概述
  8. “9元课程”拼凑起来的暑假和K12在线教育企业的生死营销战
  9. SELinux系列(二)——SELinux有什么作用
  10. 模型操作_77个典型岗位员工胜任素质模型操作指导手册
  11. oracle 11g sql和pl/sql从入门到精通,Oracle 11g SQL和PL SQL从入门到精通_IT教程网
  12. 计算机中丢失xvidcore.dll,出现xvidcore.dll not found 问题的解决方法
  13. android apk 加密
  14. 论文期刊科普-SCI SSCI CSSCI CSCD和北大核心期刊分别是什么?
  15. php.ini gd_php开启GD库实现方法
  16. c语言switch例题注释,switch语句例子大全 C语言switch语句例题
  17. mysql 抢票_PHP 高并发、抢票、秒杀 解决方案
  18. jAVA EE NZ2001 java EE学习总结 第七周(包含思维导图) 主要内容I/O框架、网络编程、反射
  19. java实现双色球生成器
  20. 2021年跨境品牌集体出海,2020年跨境电商数据报告分享

热门文章

  1. 测试x86cpu的指令集
  2. h5课件制作_一个好的h5交互课件该怎么制作
  3. 华为定制版Linux镜像下载,华为OpenEuler体验系列(02)--定制支持NTFS的微型Linux启动盘...
  4. linux安装neo4j及远程访问
  5. 论初始值的重要性-仅仅是更改初始值loss差别就非常大
  6. 计算机职称excel2007,职称计算机Excel2007中文电子表格考试大纲
  7. php调用应用程序api,使用PHP调用openAPI
  8. 使用tab键分割的文章能快速转换成表格。( )_Word 多级列表编号方法总结(一)——快速入门
  9. linux中useradd的文件路径,linux的useradd命令详细解释
  10. Python日志详解【两篇就够了系列】--第一篇logging