百度2015年系统工程师笔试题:判断当前机器的大小端

news2024/9/23 15:26:07

本篇文章主要讲解大小端的判断问题,需要拥有指针,位段,联合体的知识。

目录

一.题目呈现

二.三种解题方法

1.巧妙利用指针和强制转换

2.利用位段的特性

3.利用联合体的性质


一.题目呈现

请简述大端字节序和小端字节序的概念,设计一个小程序来判断当前机器的字节序。

大端字节序:是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址
中;

小端字节序:是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地
址中。

总结:大端就是正着保存的,小端就是倒着保存的。

二.三种解题方法

1.巧妙利用指针和强制转换

代码:

#include <stdio.h>

int main()
{
	int a = 1;
	char* p = (char*)&a;
	if (*p == 1)
		printf("小端\n");
	else
		printf("大端\n");
	return 0;
}

思路:这里使 a =1,就很方便,因为1的二进制是 :

     00000000  00000000  00000000  00000001

如果是大端那么1就在最后,如果是小端那么1就在最前面;

所以如果能够对 int a =1 的第一个字节进行解引用,判断结果是否等于1就行了

要想只解引用一个字节就需要强制转换成 char *  类型。

在我的电脑上的打印结果:


2.利用位段的特性

代码:

typedef struct S
{
	char  a : 2;  //这里的类型写成 char 或是 int 都行
}S;

int main()
{
	S s = { 1 };
	if (s.a == 1)
		printf("小端\n");
	else
		printf("大端\n");
	return 0;
}

关于这里为什么这么写代码,就需要了解位段的性质,简单来说,虽然这里的 a 有1个字节,也就是8个比特位,但因为 a 后面是2,所以只会用到8个比特位中的2个比特位;

然后将a 初始化成1,思路和方法1一致。


3.利用联合体的性质

代码:

typedef union U
{
	char a;
	int b;
}U;

int main()
{
	U u = { 1 };
	if (u.a == 1)
		printf("小端\n");
	else
		printf("大端\n");
	return 0;
}

这里的思路还是和方法1的一致,不同的是这里巧妙地用到了联合体的性质,但本质还是不变。


以上三种方法在同一台机器上的打印结果是相同的。


🐲🦖关于大小端的判断问题到此就结束了,若有错误或是建议,欢迎小伙伴们提出;👻🕊️

😄😁希望小伙伴们能够多多支持博主哦;🥰😆

🤩😍谢谢你的阅读。😃😆

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

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

相关文章

剑指 Offer 03. 无重复字符的最长子串 [C语言]

目录题目思路1代码1结果1思路2代码2结果2该文章只是用于记录考研复试刷题题目 Leetcode 03: 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所…

A股上市公司招投标数据

一、数据简介 招投标是指在市场经济条件下进行大宗货物的买卖、工程建设项目的发包与承包以及服务项目的采购与提供时所采取的一种普遍交易方式。招标和投标是一种商品交易行为&#xff0c;是交易过程的两个方面。历经三十多年的发展&#xff0c;我国已经形成了覆盖全国各领域、…

Java类和对象的学习笔记

本篇介绍了面向对象和面向过程的关系,类的定义,对象的成员(成员变量,成员方法)和对象成员访问,类和对象的关系 对象的初始化,对象的构造(构造方法的定义和使用),对象内的this介绍和用法… 细节较多.建议收藏,看完此篇,踏上面向对象的第一步~ 类和对象的学习一.初识面向对象1.什…

一文读透JVM虚拟机结构[迭代中]

注: 码字辛苦, 转载请标注转载来源 jvm结构图: [1] 整个JVM架构包含三部分: 类加载 加载 双亲委派机制 链接 初始化 静态变量的初始值赋值 运行时数据区域 线程私有区域线程共享区域 执行引擎 解释器JIT即时编译器GC 运行时数据区域 线程私有区域: 线程私有区域主…

Springboot整合分布式链路追踪SkyWalking之探针使用和链路采集实战(二)

目录 1.链路追踪-框架Springboot项目搭建 1.1 创建一个Springboot项目 1.2 SpringBootMybaitsPlusMysql开发测试接口 1.2.1 添加依赖配置pom.xml 1.2.2 添加配置 application.properties 1.2.3 开发接口 ​ 2.分布式链路追踪的卧底 Skywalking Agent 探针介绍 2.1 Skyw…

Java设计模式-解释器模式Interpreter

介绍 在编译原理中&#xff0c;一个算术表达式通过词法分析器形成词法单元&#xff0c;而后这些词法单元再通过语法分析器构建语法 分析树&#xff0c;最终形成一颗抽象的语法分析树。这里的词法分析器和语法分析器都可以看做是解释器解释器模式&#xff08;Interpreter Patte…

Linux操作系统使用git提交代码

引言&#xff1a; 北京时间 2023/1/27/9:50&#xff0c;今天的起床时间9:05&#xff0c;可以看出我们是提前了一些些&#xff0c;但是不是我的功劳&#xff0c;当然也不是我的闹钟的功劳&#xff0c;毕竟我的闹钟是8:20和8&#xff1a;50的&#xff0c;因为我亲爱的老妈……懂…

threejs相机控件使用记录

文章目录前言控件列表轨迹球控制器&#xff08;TrackBallControls&#xff09;第一人称控制器&#xff08;FirstPersonControls&#xff09;飞行控制器&#xff08;FlyControls&#xff09;轨道控制器&#xff08;OrbitControls&#xff09;总结前言 threejs提供了很多摄像机控…

mixamo和ue小白人映射关系以及让mixamo绑定的人物在场景中运动的多种方法实践...

ue中的root->Hips ue中 ik_foot_l ik_foot_r下面有foot_r 在mixamo下面leftfoot对应ik_foot_l 但是foot_l 只能给他对应leftToeBase 了 image.pngspline 盆骨对应pelvis 在绑定控制中进行修改即可. image.png方法一 拷贝动画蓝图 [本人原创方法] 此方法毕竟操蛋,虽然完美兼容…

Linux驱动开发基础__休眠与唤醒

目录 1 适用场景 2 内核函数 2.1 休眠函数 2.2 唤醒函数 3 驱动框架 4 编程 4.1 gpio_key_drv.c 4.2 button_test.c 4.3 Makefile 1 适用场景 在前面引入中断时&#xff0c;我们曾经举过一个例子&#xff1a; 妈妈怎么知道卧室里小孩醒了&#xff1f; 休眠-唤醒&…

pytorch深度学习案例(一)——手写数学符号识别

文章目录前言简介数据集项目结构utils模块dataLoadermodelsplotShowtrain模块predict模块下载地址前言 在前面的两篇文章中我们介绍了现代计算机视觉中常见的结构化和非结构化的CNN模型&#xff0c;本篇我们将使用这些CNN模型在手写数学符号数据集上进行识别。 CNN模型的介绍请…

2022回顾

2022年回顾 前言 新年和亲朋好友的相聚差不多接近尾声&#xff0c;假期也所剩无几&#xff0c;开始静下心来写作&#xff0c;回顾一下我的2022年&#xff0c;看下自己去年 做得好的和不足&#xff0c;展望下2023&#xff0c;开始新一年的生活。&#xff08;因为是公历2023年…

Grafana 系列文章(一):基于 Grafana 的全栈可观察性 Demo

&#x1f4da;️Reference: https://github.com/grafana/intro-to-mlt 这是关于 Grafana 中可观察性的三个支柱的一系列演讲的配套资源库。 它以一个自我封闭的 Docker 沙盒的形式出现&#xff0c;包括在本地机器上运行和实验所提供的服务所需的所有组件。 Grafana 全栈可观察…

剑指 Offer 第9天 第10天

目录 剑指 Offer 42. 连续子数组的最大和 剑指 Offer 47. 礼物的最大价值 剑指 Offer 46. 把数字翻译成字符串 剑指 Offer 48. 最长不含重复字符的子字符串 剑指 Offer 42. 连续子数组的最大和 输入一个整型数组&#xff0c;数组中的一个或连续多个整数组成一个子数组。求所…

Python self用法详解

在定义类的过程中&#xff0c;无论是显式创建类的构造方法&#xff0c;还是向类中添加实例方法&#xff0c;都要求将 self 参数作为方法的第一个参数。例如&#xff0c;定义一个 Person 类&#xff1a;class Person: def__init__(self): print("正在执行构造方法") #…

大数据项目---电商数仓(三)

目录 1.即席查询_Presto概述 2.即席查询_Presto_Server的部署 3.即席查询_Presto_Server启动 4.即席查询_命令行客户端说明 5.即席查询_LZO说明 6.即席查询_Presto_web端口 ​编辑 7.即席查询_Presto使用注意事项/优化 8.即席查询_Kylin简介 9.即席查询_前置概念 10.即…

数据库系统结构、数据库系统的组成

文章目录一、数据库系统的三级模式结构1.模式&#xff08;逻辑模式&#xff09;2.外模式&#xff08;子模式、用户模式&#xff09;3.内模式&#xff08;存储模式&#xff09;二、数据库的二级映像功能1.外模式/模式映像2.模式/内模式映像3.实际应用三、数据库系统的组成---硬件…

安卓性能优化之内存优化

Java对象生命周期&#xff1a; 创建&#xff1a;为对象分配内存空间&#xff0c;构造对象应用&#xff1a;此时 对象至少被一个强引用持有不可见&#xff1a;未被任何强引用持有&#xff0c;进行可达性分析不可达&#xff1a;可达性分析为不可达&#xff0c;进入下一阶段收集&…

notes

等差&#xff1a;&#xff0c;求 解&#xff1a;、 &#xff0c;则 解&#xff1a; x系数y系数1412 由 得分母 &#xff1b;则分子为&#xff0c; 解&#xff1a;令 已知两边及夹角&#xff0c;可图解 解析几何条件转化 1.平行四边形条件的转化几何性质代数实现(1)对边平行斜…

【IoT】创业:如何找到可以主导的创业市场?

如果你想开始创业&#xff0c;开启一段不一样的旅程&#xff0c;那么你首先要做的就是选赛道&#xff01; 如何选择你的赛道、你的第一个市场呢&#xff1f; 换句话说就是&#xff0c;你如何选择自己的利基市场。 最大的市场&#xff0c;同时&#xff0c;它的需求范围也最广…