每日一题(51)—— 大小端判断


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






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

嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。采用Little-endian模式的CPU对操作数的存放方式是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。例如,16bit宽的数0x1234在Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:

内存地址

存放内容

0x4000

0x34

0x4001

0x12


  而在Big-endian模式CPU内存中的存放方式则为:

内存地址

存放内容

0x4000

0x12

0x4001

0x34


  32bit宽的数0x12345678在Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:

内存地址

存放内容

0x4000

0x78

0x4001

0x56

0x4002

0x34

0x4003

0x12


  而在Big-endian模式CPU内存中的存放方式则为:

内存地址

存放内容

0x4000

0x12

0x4001

0x34

0x4002

0x56

0x4003

0x78


  联合体union的存放顺序是所有成员都从低地址开始存放,面试者的解答利用该特性,轻松地获得了CPU对内存采用Little-endian还是Big-endian模式读写。







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

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

相关文章

Android初学第21天

Android初学第21天 09_LayoutsAndWidgets 代码 SignleFragmentActivity.java package com.bignerdranch.android.criminalintent;import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.…

快两年的时间,我都干了啥

‍‍‍‍大家好,我是写代码的篮球球痴这是一篇总结性的文章,主要是总结这一年多快两年的时间,我都在做了些什么。公司名字我就不说了,知道的人一眼就知道了。我们是一家智能家居的公司。提到智能家居,就一定会涉及网关&#xff0c…

每日一题(52)—— 进程

列举几种进程的同步机制: 1)原子操作 2)信号量机制 3)自旋锁 4)管程,会合,分布式系统 网络编程中设计并发服务器,使用多进程与 多线程 ,请问有什么区别?…

ioremap,你应该知道的事

因为现在使用是dts来表示板级,也就是machine,所以现在我们在内核使用内核映射使用的函数是of_iomap。c代码:struct device_node *node NULL;unsigned int irq_info[3] { 0, 0, 0 };u32 phys_base;switch (idx) {case 0:node of_find_node_…

牙痛,肿成阴阳脸

成阴阳脸:-( 明天见不了客户了,犯愁。好在台湾的朋友非常热情,晚上还安排最好的牙医林先生在诊所等我;又有另一朋友送我神奇的东南亚牙膏。

.NET 二维码生成(ThoughtWorks.QRCode)

引用ThoughtWorks.QRCode.dll (源代码里有) 1、简单二维码生成及解码代码: //生成二维码方法一private void CreateCode_Simple(string nr) { QRCodeEncoder qrCodeEncoder new QRCodeEncoder(); qrCodeEncoder.QRCodeEncodeMode QRCodeEnc…

如何向开源社区奉献代码

从事嵌入式工作, 日常就是与u-boot, linux这些开源代码打交道, 将自己的代码提交到主线, 将是一件快乐而又能提升逼格的事情. 有些比较新的代码会使用github进行bug追踪, pr合并, 这些直接在github提交Pull Request就好了, 比较简单, 就不在赘述. 本文重点介绍如何使用mail lis…

每日一题(53)—— 评价代码片段

评价下面代码片段: unsigned int zero 0; unsigned int compzero 0xFFFF; /*1s complement of zero */ 对于一个int型不是16位的处理器为说,上面的代码是不正确的。应编写如下: unsigned int compzero ~0; 这一问题真正能揭露出应试者是…

TCP三次握手及四次挥手详解

此篇文章转载自:http://justim.blog.51cto.com/740099/237548TCP(Transmission Control Protocol) 传输控制协议TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchron…

zxing二维码的生成与解码(C#)

ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码。目标是能够对QR编码、Data Matrix、UPC的1D条形码进行解码。 其提供了多种平台下的客户端包括:J2ME、J2SE和Android。 首先,在其官网http://code.google.com/p/zxing/上去下载源码 编译在其cshar…

STM32项目(一) —— 展示车座椅

STM32项目(一) —— 展示车座椅 宗旨:技术的分享是有限的,分享的精神是无限的。功能:模拟人开车时,ACR和ABL的变化。 主控制器:STM32(CAN,串口,网口&#xff…

一文读懂 | CPU负载均衡实现

在《一文读懂 | 进程怎么绑定 CPU》这篇文章中介绍过,在 Linux 内核中会为每个 CPU 创建一个可运行进程队列,由于每个 CPU 都拥有一个可运行进程队列,那么就有可能会出现每个可运行进程队列之间的进程数不一样的问题,这就是所谓的…

NA-NP-IE系列实验28:HDLC 和PPP 封装

实验28:HDLC 和PPP 封装<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />1. 实验目的通过本实验&#xff0c;读者可以掌握如下技能&#xff1a;&#xff08;1&#xff09; 串行链路上的封装概念&#xff08;2&#xff09; HDLC 封…

使用git提交到github,每次都要输入用户名和密码的解决方法

使用git提交文件到github,每次都要输入用户名和密码&#xff0c;操作起来很麻烦&#xff0c;以下方法可解决&#xff0c;记录以下。 原因&#xff1a;在clone 项目的时候&#xff0c;使用了 https方式&#xff0c;而不是ssh方式。 默认clone 方式是&#xff1a;https 切换到&am…

回家一趟

大家好&#xff0c;我是写代码的篮球球痴。最近休年假回了一趟家里&#xff0c;决定回来也比较仓促&#xff0c;那天在公司的36楼发呆&#xff0c;觉得心里有点东西&#xff0c;然后就特别想回家看看。从晚上8&#xff1a;30出发&#xff0c;到第二天的中午&#xff0c;我从广东…

STM32项目(二) —— 车灯测试台架

STM32 —— 车灯测试台架 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 需求&#xff1a; &#xff08;1&#xff09;、点灯控制器&#xff1a;在线节拍&#xff0c;离线节拍&#xff1b; &#xff08;2&#xff09;、PWM控制盒&#xff1a;在线PWM&…

Spring MVC 使用介绍(二)—— DispatcherServlet

一、Hello World示例 1、引入依赖 <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope> </dependency> <dependency&g…

单片机如何检测市电通断?(应用甚广~)

我们在topemic网站上分享过一篇题为"单片机检测220V交流电通断电路"的文章&#xff0c;目前有近万次阅读&#xff0c;在这里做个总结分享给没有读过该文的公众号朋友。废话不多说&#xff0c;直接上图&#xff1a;该电路工作原理如下&#xff1a;当220V断开时&#x…

STM32项目(三)——通用LIN控制器

STM32——通用LIN控制器 宗旨&#xff1a;技术的分享是有限的&#xff0c;分享的精神是无限的。 需求&#xff1a; LIN马达控制器&#xff1a;AFS&#xff08;DHLAFL&#xff09;——弯道辅助照明系统 DHL&#xff1a;上极限&#xff0c;下极限&#xff0c;零位&#xff0c;马…

精妙的SQL语句收藏

说明&#xff1a;复制表(只复制结构,源表名&#xff1a;a 新表名&#xff1a;b)select * into b from a where 1<>1说明&#xff1a;拷贝表(拷贝数据,源表名&#xff1a;a 目标表名&#xff1a;b)insert into b(a, b, c) select d,e,f from b;说明&#xff1a;日程安排提…