/*1. 利用不同的数据类型占用空间不一样测试*/
#include <stdio.h>
int main()
{

short int x;

char x1,x2;
    x = 0x1122;
    x1 = ((char *)&x)[0];    //低地址
    x2 = ((char *)&x)[1];    //高地址
    printf("x1=%x\n",x1);
    printf("x2=%x\n",x2);
    return 0;
}
//
/*2.***************************************/
typedef unsigned char BYTE;
int main(int argc, char* argv[])
{
unsigned int num,*p;
p = &num;
num = 0;
*(BYTE *)p = 0xff;
if(num == 0xff)
{
printf("The endian of cpu is little\n");
}
else //num == 0xff000000
{
printf("The endian of cpu is big\n");
}
return 0;
}
/*3.*****************************************/
/*利用指针取值时不同类型读取字节数不一样*/
#include<stdio.h>
int main()
{
    int x = 1;
    char *p = (char *)&x;

if(*p)
    {
        printf("little\n");
    }
    else
    {
        printf("large\n");
    }
    return 0;
}

/*4.*****************************************/
/*利用union*/
int checkCPU()
{
  {
union w
{
 int a;
 char b;
    } c;
c.a = 1;
return (c.b == 1);
  }
}

/*5.*******************************************/
/*神级代码kernel/arch/arm/kernel/setup.c */
/*
static union {char c[4]; unsigned long mylong;}
endian_test={{'l', '?','?','b'}};
#define ENDIANNESS  ((char)endian_test.mylong);
*/
static union 

char c[4]; 
unsigned long mylong; 
} endian_test = {{ 'l', '?', '?', 'b' } };
#define ENDIANNESS ((char)endian_test.mylong);
Linux 的内核作者们仅仅用一个union 变量和一个简单的宏定义就实现了一大段代码同样的功能!由以上一段代码我们可以深刻领会到Linux 源代码的精妙之处!(如果ENDIANNESS=’l’表示系统为little endian,
为’b’表示big endian )

如何测试大端存储和小端存储相关推荐

  1. C语言--测试电脑存储模式(大端存储OR小端存储)

    相信大家都知道大端存储和小端存储的概念,这在平时,我们一般不用考虑,但是,在某些场合,这些概念就显得很重要,比如,在 Socket 通信时,我们的电脑是小端存储模式,可是传送数据或者消息给对方电脑时, ...

  2. ARM9的存储结构~~大端存储和小端存储

    众所周知ARM9的每个地址对应的是一个存储字节而不是一个存储字,但ARM9可以访问存储字,访问存储字时,其地址应该是字对准,即字地址可以被四整除,也就是说,若第1个字在存储空间中是第0个地址对应单元( ...

  3. C语言-大端存储和小端存储

    一. 简介 我们知道,一般内存的最小地址单位为字节.如下图,一个int型的变量是4个字节,我们用2个十六进制数表示1个字节,int型变量需要用到8个十六进制数表示. 大端(存储)模式:数据的低位保存在 ...

  4. 写一个程序判断机器是大端存储还是小端存储

    0x11223344 大端:11 22 33 44          小端:44 33 22 11 #include<iostream>using namespace std;int ma ...

  5. c语言 int大端转小端,C++将整型数据转换成大端或小端存储顺序

    昨晚帮导师从指令中恢复图像的时候,导师要我转换成raw格式,也就是记录图像像素的二进制序列,然后反复强调让我注意大端小端.当时我也没在意,用ofstream的write方法一个个地写进去,发现有部分数 ...

  6. C语言中低位存放,C语言 大端小端存储解析以及判断方法

    当我们在C语言中查看数据在内存中的存储时,我们经常会发现一个很奇怪的现象,什么现象呢? 例如下面这段代码 int main() { int i = 1; return 0; } 数据在内存中的存放方式 ...

  7. C语言程序设计 | 大端小端存储解析以及判断方法

    当我们在C语言中查看数据在内存中的存储时,我们经常会发现一个很奇怪的现象,什么现象呢? 例如下面这段代码 int main() {int i = 1;return 0; } 数据在内存中的存放方式似乎 ...

  8. 数据的存储,大端存储和小端小端存储

    在数据的存储中,有两种存储形式,大端存储和小端存储. 所有的数据都是在内存当中存的,而内存当中的基本单位是字节. 数据访存的基本单位是字节的话,那么一个整形变量(int)就有四个字节,那么就意味着数据 ...

  9. 大端小端存储模式详解及判断方法

    文章目录 大小端模式的概念 两种模式出现原因 两种模式的优劣 大小端的应用情景 判断机器的字节序 大小端模式的概念 当我们查看数据在内存中的存储情况时,我们经常会发现一个很奇怪的现象,什么现象呢? i ...

最新文章

  1. 搭建本地YUM源服务器
  2. java手机界面太小_手机端页面在项目中遇到的一些问题及解决办法
  3. matlab程序崩溃怎么解决,java – 如何避免MATLAB崩溃打开太多的数字?
  4. nodejs path.parse()
  5. XGBoost算法的相关知识
  6. art-template入门(一)之介绍
  7. 2020蓝桥杯省赛---java---B---6(成绩分析)
  8. 关于GCC的理解——On the understanding of the GCC
  9. 苹果mac屏幕录像软件:ScreenFlow
  10. hdu1233 还是畅通工程 基础最小生成树
  11. Windows XP 禁用屏幕保护功能
  12. js之dialogArguments
  13. excel 制作二维码
  14. android专业拍照软件,安卓最专业的拍照软件排行榜 优质滤镜相机软件推荐
  15. mysql timestamp毫秒_MySQL的Timestamp插入丢失毫秒的问题
  16. 定点 浮点 神经网络 量化_定点量化
  17. 关于如何处理MyEclipse中struts2与Hiber 3中antlr-2.7.2.jar与antlr-2.7.6包冲突的问题
  18. Lucky Kat LAND — NFT 系列发售
  19. DeepTraLog: Trace-Log Combined Microservice AnomalyDetection through Graph-based Deep Learning
  20. 更换固态硬盘(不重装系统)(3)

热门文章

  1. Android NDK开发一:配置环境
  2. StarUML启动报RPC服务器不可用错误
  3. 【UML】如何看Android的UML图
  4. 不能使用缺陷数据作为绩效度量
  5. 58同城买二手电脑的感想
  6. SQL 触发器的使用
  7. C#中的委托与事件[翻译]
  8. python建立虚拟环境不成功_virtualenv 创建虚拟环境不成功
  9. 8266串口调试助手_开源软件分享-基于WPF的串口调试工具
  10. php 登录重定向,PHP登录后重定向