[小知识]如果使用union判断机器内存是大端序存储还是小端序存储 @ C

比如int i = 1,如果是小端序存储,那么在内存中应该是这样的:0x01 0x00 0x00 0x00;如果是大端序存储的,在内存中应该是:0x00 0x00 0x00 0x01。

那么如何编程来判断机器是大端序存储呢还是小端序存储呢?

上代码:

#include <stdio.h>

int isBigEndian()
{
    union
    {
        int i;
        char c;
    }test;

    test.c = 1;

    return test.i != 1;
}

int main()
{
    printf("%d\n", isBigEndian());
}

由于union中的int和char都是从低地址开始存储的,所以如果是小端序存储的话,对test.c赋值为一,则union应该是0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00,那么test.i的值应该也是1,那么test.c==test.i。如果是大端序存储的话,union在内存中应该是这样:0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x00,那么test.i的值应该是2的8次方,即test.i==256。也就是说,如果是大端序存储的话,test.i != test.c。如果test.i != test.c,那么为大端序存储,如果相等,则为小端序存储。

时间: 2024-10-06 18:52:10

[小知识]如果使用union判断机器内存是大端序存储还是小端序存储 @ C的相关文章

iOS内存小知识

//ios没有垃圾回收机制,oc有垃圾回收机制,mac有垃圾回收机制,mac在10.1版本后被启用//mrc(引用计数)手动分配并释放    //alloc 分配空间//retain 引入计数加1//copy  复制(另开辟空间,和原来的一样)//release 释放,引用计数减1//autorelease 在未来某一时刻减1//dealloc  清除 //内存中会出现的问题:内存溢出,野指针       //gc:垃圾回收机制,可以自动判断那些内存是不再使用的,由系统帮助我们回收      

拿不到想要的offer,只缘身在CV中,关于一些面试小知识

在平时我们面试的过程总总会遇到一些面试官问一些平时我们不怎么注意的问题,当问出来的时候,面试者通常都是一脸懵逼,这和我想象中的不一样阿,怎么不按照套路出牌,当然一些小知识更能体现出你的细心和好学,以下分析20个面试中的小知识,共勉~.·整理的这份PDF有从基础到进阶.含有BATJ.字节跳动面试专题,算法专题,高端技术专题,混合开发专题,java面试专题,Android,Java小知识,到性能优化.线程.View.OpenCV.NDK等应有尽有.还有辅之相关的视频+学习笔记 (更多完整项目下载.未

判断机器大小端模式的方法

首先我们要明白啥子叫大端模式.小端模式. 大端模式,是指数据的高位,保存在内存的低地址中,而数据的低位,保存在内存的高地址中: 小端模式,是指数据的高位,保存在内存的高地址中,而数据的低位,保存在内存的低地址中: 大端模式和我们的逻辑有点相反,而小端模式和我们的逻辑是一致的: 对于32位的系统,他一个字长是4个字节.那么对于数据0x12345678 你可以在linux的目录下建立一个文件,将数据0x12345678输入进去,保存文件. 利用命令 od -x  filename  查看 测试结果是

ios开发小知识2

http://blog.sina.com.cn/s/blog_66450b500102vadq.html http://www.cnblogs.com/lovesmile/archive/2012/06/27/2565569.html ios开发小知识2(转自cc) 退回输入键盘  - (BOOL)textFieldShouldReturn:(id)textField{    [textField resignFirstResponder];} CGRectCGRect frame = CGRe

电脑系统维护小知识!——————【Badboy】

电脑系统维护小知识 1.经常进行"磁盘清理"和磁盘碎片整理" 当硬盘用久了,无数次的新增.更改和删除程序和文件后,就会造成很多断断续续的扇区,非连续性的文件便会愈来愈多,硬盘磁头便需要花更多时间跳来跳去来读取数据,这就导致硬盘速度减慢.因此,我们应该定期进行"磁盘清理"和磁盘碎片整理",将所有非连续性的文件重新编排整齐.处理方法:点开始-程序-附件-系统工具-磁盘清理程序和磁盘碎片整理程序.有可能整理过程很慢,那是你长时间没有清理或者有只读文件,

js中级小知识1

首先我们复习之前的小知识,本期博客与之前有关 js数据类型 基本数据类型:string    undefined         null         boolean          number 引用数据类型:     Object     array       function 二者的区别 基本数据类型就是简单的操作值,引用数据类型,把引用地址赋值给变量 堆内存 就是存放代码块的,存放形式有两种,一种是对象一键值对的形式存放 另一种就是函数 以字符串的形式存放 案例 引用数据类型的赋

面试过程中,你知道这些小知识,将事半功倍

在平时我们面试的过程总总会遇到一些面试官问一些平时我们不怎么注意的问题,当问出来的时候,面试者通常都是一脸懵逼,这和我想象中的不一样阿,怎么不按照套路出牌,当然一些小知识更能体现出你的细心和好学,以下分析20个面试中的小知识,共勉~.·整理的这份PDF有从基础到进阶.含有BATJ.字节跳动面试专题,算法专题,高端技术专题,混合开发专题,java面试专题,Android,Java小知识,到性能优化.线程.View.OpenCV.NDK等应有尽有.还有辅之相关的视频+学习笔记 (更多完整项目下载.未

如何正确查看Linux机器内存使用情况

如何正确查看Linux机器内存使用情况 背景 ??只要工作上涉及到Linux机器,基本上都会有这样一个需求,查看内存使用情况,但是怎么看才正确呢?之前使用的是top命令,一直存在一个误区. 为什么top命令看内存会有误区? ??top是个很好用的系统分析工具,可以实时查看进程,cpu使用率,内存使用率等情况,有点像windows下的任务管理器.我以前一直以为top看到的就是真正的内存使用情况,后来baidugoogle好久,才发现自己图样.= =|| 首先看下top命令后展示出来的内存使用情况,

Linux 小知识翻译 - 「syslog」

这次聊聊「syslog」. 上次聊了「日志」(lgo).这次说起syslog,一看到log(日志)就明白是怎么回事了.syslog是获取系统日志的工具. 很多UINIX系的OS都采用了这个程序,它承担了「获取系统全部的日志」这个维持系统正常运行的重要任务. syslog的本体是「syslogd」这个daemon(一般翻译成守护进程),常驻内存中获取日志. syslog的特点是可以通过配置文件「/etc/syslog.conf」,对「哪种应用程序?哪种重要度的信息?记录在哪个文件中?」等进行细致的