大端(Big Endian)、小端(Little Endian)

端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。在计算机业Big Endian和Little Endian也几乎引起一场战争。在计算机业界,Endian表示数据在存储器中的存放顺序。下文举例说明在计算机中大小端模式的区别。

如果将一个32位的整数0x12345678存放到一个整型变量(int)中,这个整型变量采用大端或者小端模式在内存中的存储由下表所示。为简单起见,本书使用OP0表示一个32位数据的最高字节MSB(Most Significant Byte),使用OP3表示一个32位数据最低字节LSB(Least Significant Byte)。

 

地址偏移

大端模式

小端模式

0x00

12(OP0)

78(OP3)

0x01

34(OP1)

56(OP2)

0x02

56(OP2)

34(OP1)

0x03

78(OP3)

12(OP0)

 

如果将一个16位的整数0x1234存放到一个短整型变量(short)中。这个短整型变量在内存中的存储在大小端模式由下表所示。

 

地址偏移

大端模式

小端模式

0x00

12(OP0)

34(OP1)

0x01

34(OP1)

12(OP0)

 

由上表所知,采用大小模式对数据进行存放的主要区别在于在存放的字节顺序,大端方式将高位存放在低地址,小端方式将低位存放在高地址。采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。到目前为止,采用大端或者小端进行数据存放,其孰优孰劣也没有定论。

有的处理器系统采用了小端方式进行数据存放,如Intel的奔腾。有的处理器系统采用了大端方式进行数据存放,如IBM半导体和Freescale的PowerPC处理器。不仅对于处理器,一些外设的设计中也存在着使用大端或者小端进行数据存放的选择。

因此在一个处理器系统中,有可能存在大端和小端模式同时存在的现象。这一现象为系统的软硬件设计带来了不小的麻烦,这要求系统设计工程师,必须深入理解大端和小端模式的差别。大端与小端模式的差别体现在一个处理器的寄存器,指令集,系统总线等各个层次中。

 

请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
解答:

int checkCPU( )
{
{
union w
{
int a;
char b;
} c;
c.a
=1;
return(c.b ==1);
}
}

 

union的存放顺序是所有成员都从低地址开始存放(0x0000为低地址,0xffff为高地址)

 转自:http://hi.baidu.com/ilotus_y/blog/item/efca278f51bb72ff503d9243.html

转载于:https://www.cnblogs.com/todsong/archive/2010/11/03/1868401.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303920.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎样安装php52-71,CentOS如何安装PHP5和PHP7

推荐(免费):PHP7安装PHP5下载解压二进制包[roottest-a src]# cd /usr/local/src/[roottest-a src]# wget http://cn2.php.net/distributions/php-5.6.32.tar.bz2[roottest-a src]# tar jxvf php-5.6.32.tar.bz2编译安装PHP./configure --prefix/usr/local/php --wit…

应用程序自动更新组件GeneralUpdate3.2.1发布

GeneralUpdate开源组件更新公告一、组件简介GeneralUpdate是基于.net standard开发的一款(c/s应用)自动升级程序。该组件将更新的核心部分抽离出来方便应用于多种项目当中目前适用于wpf,控制台应用,winfrom。本组件(除…

你不知道C#只带有 get 访问器的属性是只读属性?

问题窥探之前有个哥们在使用Newtonsoft.Json反序列化的时候,发现明明有数据,但是就是序列化不出来数据到实体里面。咋一看,确实没什么问题啊,字符串的数据是存在的。那么问题出在哪里呢。解决思路1、我让他把字符串复制出来&#…

java中formfile,基于Struts FormFile上传文件

基于Struts文件上传(FormFile)详解Struts中FormFile用于文件进行上传1.在jsp文件中进行定义名字:头像:2.在Form表单中定义FormFile/** Generated by MyEclipse Struts* Template path: templates/java/JavaClass.vtl*/package com.yourcompany.struts.form;import j…

葬身李刚儿子车轮下的漂亮女孩

这么一个青春、靓丽的女孩~~~~~~~~就这样丧生在官二代的铁轮下~~~~~~~~~~~~可惜了~~~~~~~~~~~~哀痛啊,什么世道!转载于:https://blog.51cto.com/jsfido/418494

EF Core事务提交,分布式事务

控制事务可以使用 DbContext.Database API 开始、提交和回滚事务。 以下示例显示了在单个事务中执行的两个 SaveChanges 操作以及一个 LINQ 查询:using var context new BloggingContext(); using var transaction context.Database.BeginTransaction();try {cont…

RTC 媒体流数据包丢包问题解决

最近在一个测试中,遇到了OCS和PSTN通话之间的声音出现严重的断续问题,用户的使用体验就是听对方的声音不是完整的,有部分的语音丢失,在服务器上判断就是RTC数据包丢失了。专业术语就是Voice clipping。先看看丢包的恐怖情况&#…

global.php,global.php

/*** 自动判断PHP版本,并把所有环境变量转为全局变量** author Avenger * version $Id 2003-05-18 13:01:14 $*/ function pmyoutput(&$a) {if (is_array($a)) {array_walk($a,"pmyoutput");} else {$a stripslashes($a);$a str_replace("&…

如何在 ASP.Net Core 中使用 Autofac

依赖注入可以有效的实现对象之间的 松耦合 并能够实现代码的可测试和可维护性,ASP.Net Core 提供了一个极简版的容器实现对 依赖注入 的原生支持,然而内置的依赖注入容器相比成熟的 依赖注入容器 太弱了。为了解决这个问题,可以使用第三方的依…

2010年11月编程语言排行榜:手机里的代码

【51CTO独家特稿】Tiobe今天发布了最新一期的编程语言排行榜。本期榜单的前五名与10月份没有明显变化,依然是Java、C、C、PHP和Python;Objective-C的增长势头强劲。本期另外一个值得注意的语言是重回前20名NXT-G。NXT-G是一种集成在乐高(LEGO…

php网站开发期末大作业,大学生期末网页大作业

【实例简介】6页面的网页设计,是个人主页类型。包含了6个页面,包含视频、脚本等元素。水平不高,但交选修作业就足够了。【实例截图】【核心代码】为ai而狂└── 为ai而狂├── FLVPlayer_Progressive.swf├── Halo_Skin_3.swf├── Scri…

NET问答: 如何迭代 Enum ?

咨询区 Peter Mortensen:如何使用 C# 迭代 enum ?下面的代码会编译失败,错误信息: Suit is a type but is used like a variablepublic enum Suit {Spades,Hearts,Clubs,Diamonds }public void EnumerateAllSuitsDemoMethod() {foreach (Suit suit in S…

python hexdigest,Java方法,可以为Hex中的HMAC-SHA256提供与Python方法相同的输出

你确定你的密钥和输入是相同的,并在java和python中正确编码?HMAC-SHA256在两个平台上的工作方式相同.Java的Mac sha256_HMAC Mac.getInstance("HmacSHA256");SecretKeySpec secretKey new SecretKeySpec("1234".getBytes(), "HmacSHA256…

承接数字油画图稿/线条图定制(出图)业务

集异璧实验室对外提供数字油画图纸(图稿/线条图)定制和自选业务,欢迎洽谈。 定制流程: (1)贵方将图片传给我方; (2)我方出图,提供效果图; &#…

爬取异步请求(XHR/JS)数据方法

概述之前在做爬虫的时候,比如在爬取到https://www.1688.com/?spma261p.8650866.0.0.2dfa36c3tjLrCQ网页的时候,发现很多内容明明在浏览器看得见,但是请求下来的内容却没有,于是打开F12查看Network发现,如下&#xff1…

SQLServer支持大内存方案(转载)

转载自:http://user.qzone.qq.com/33524538?ptlang2052 SQLServer支持大内存方案 一、启动PAE支持; 方法:系统安装目录的根目录下有个系统隐藏文件:boot.int,加入/PAE参数 [boot loader] timeout30 defaultmulti(0)disk(0)rdisk(0)partition(1)\WINDOWS…

php的old函数,laravel单元测试之phpUnit中old()函数报错解决

php 的 laravel单元测试之phpUnit中old()函数报错解决前言最近在做laravel单元测试.遇到了一个问题:当添加的view里面使用old()函数时就会报错,正常url访问没问题,但是在phpUnit中就报错错误原因: exception RuntimeException with message Session store not set o…

ASP.NET Core 集成 React SPA 应用

AgileConfig的UI使用react重写快完成了。上次搞定了基于jwt的登录模式(AntDesign Pro .NET Core 实现基于JWT的登录认证),但是还有点问题。现在使用react重写后,agileconfig成了个确确实实的前后端分离项目。那么其实部署的话要分…

IBM在欧洲启动“智能云”研发计划

据国外媒体报道,IBM今日宣布将与15个欧洲合作伙伴启动一项联合研究项目,其中包括标准组织以及电信、医疗和媒体行业的企业一起开发一种基于目标的、标准化的“智能云”存储架构。 IBM表示,此次合作的目的是改善富媒体数据和存储服务跨国界跨厂…

etcd php,etcd集群备份和数据恢复

etcd是一个分布式k-v数据库,在kubernetes中使用其管理集群的元数据。这里介绍etcd集群数据的备份和数据恢复的方法和步骤。快照定期备份crontab定期执行备份脚本,每半小时备份一次,本地、异地都备份(暂定:本地备份保留最近10个备份…