大端:高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。(CPU对操作数的存放方式是从高字节到低字节)
小端:低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。(CPU对操作数的存放方式是从低字节到高字节)#include<stdio.h>
int main()
{//小端模式:低地址存低字节//大端模式:低地址存高字节int temp = 0x1234; //x=0x1234,占两个字节,0x12是高字节,0x34在低字节char *p = (char *)&temp;printf("p[0] = %#x, p[1] = %#x\n",p[0], p[1]);printf("*p = %#x\n",*p);if(*p == 0x34)printf("小端模式\n");else if(*p == 0x12)printf("大端模式\n");return 0;
}

通过打印更清晰的认识其本质 

/*
大小端定义:和我们从左到右阅读的习惯一致。
大端:高字节放在低地址。0x11223344 -> |0x11|0x22|0x33|0x44
小端:低字节放在低地址。0x11223344 -> |0x44|0x33|0x22|0x11
*/
#include<iostream>
using namespace std;int main() {union UN {int i;//union枚举类型,i和str其实是一片内存地址,内联un的首地址char str;//不管str定义位置,都会被放在前面底地址//i占4个byte,str占1个byte.内存分布:0000 0000 0000 0000} un;un.i=1;//小端内存分布:// int和char公用一个内存地址,占4个byte.// 0001 0000 0000 0000printf("un = %p, &str = %p, &i = %p\n",&un, &un.str,&un.i);printf("str = %d\n", un.str);//通过char*每次位移一个byte访问int的4个字节,看到数值1在什么位置存储printf("*un = %d, &un = %p\n", *((char*)&un),(char*)&un);printf("*un+1 = %d, &un+1 = %p\n", *((char*)&un+1),(char*)&un+1);printf("*un+2 = %d, &un+2 = %p\n", *((char*)&un+2),(char*)&un+2);printf("*un+3 = %d, &un+3 = %p\n\n", *((char*)&un+3),(char*)&un+3);int a = 3;char *p = ( char*)&a;//通过char*每次位移一个byte访问int的4个字节,看到数值3在什么位置存储printf("p = %d, &p = %p\n", *(p),p);printf("p+1 = %d, &p+1 = %p\n", *(p+1),p+1);printf("p+2 = %d, &p+2 = %p\n", *(p+2),p+2);printf("p+3 = %d, &p+3 = %p\n", *(p+3),p+3);return 0;
}

最简单判断系统大小端相关推荐

  1. 系统大小端的头文件定义

    系统大小端的头文件定义 系统大小端的判断,虽说可以写函数来判断,但有时需要在预处理时就知道大小端,可使用C库头文件<endian.h>来判断,写法入下: 1.#include <en ...

  2. linux中判断平台是大端或小端的方法,判断机器大小端的方法

    以前就简单据说过电脑的大小端之分,还有经过程序来判断你的电脑是大端仍是小端.今天在学习网络的时候又接触了大小端,这里就再给你们详细的介绍一下电脑的大小端.node 首先,介绍一下什么是大端什么是小端. ...

  3. linux查看编译器的大小端,Linux系统大小端判断

    大端模式 大端模式,是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中. 小端模式 小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中. 判断程序 文件: ...

  4. 判断系统大小端方法分析与总结

    情况1:利用数组类型 #include <cstdio> int checkSystem() { char s[]="1000"; return (s[0]=='1') ...

  5. 判断cpu大小端模式(c++代码实现)

    首先来了解一下大小端模式. 大端模式:高位对应低地址,低位对应高地址 :换而言之,就是数字的高位存放在内存的低址地,低位存放在内存的高地址 小端模式:高位对应高地址,低位对应低地址 :即数字的高位存放 ...

  6. 判断CPU大小端模式

    int CheckCpuEndian(void) {union{int a;char b;}c;c.a=1;return (1 == c.b); } 返回1为LittleEndian. 联合体unio ...

  7. C++ 判断系统大小字节序

    bool IsLitterEndian() {union UTest{std::uint16_t t;std::uint8_t c;} endianTest{ 0x01 };return (endia ...

  8. 大小端字节序介绍以及判断当前环境字节序的程序【C语言】

    文章目录 1.大小端字节序介绍 2. 判断当前环境的字节序程序 1.大小端字节序介绍 首先我们先来介绍什么是大端字节序,什么是小端字节序: 大小端字节序指的是数据在电脑上存储的字节顺序 小端字节序存储 ...

  9. 什么是大端小端 and 如何判断大端小端

    1. 为什么会有大小端模式之分呢? 这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit.但是在C语言中除了8bit的char之外,还有16bit的short ...

最新文章

  1. Ansible基础一Playbook(二)
  2. ie6 css :hover 和 select遮挡问题、和z-index失效问题
  3. struts2类型转换器
  4. PAT-B 1007.素数对猜想
  5. MySQL删除用户(DROP USER)
  6. lisp 读取dwg 统计信息_预制梁厂 BIM 技术和自动化、信息化应用方案
  7. 重写equals方法---java
  8. IDEA 导入Weka的Maven依赖jar包
  9. vm centos 网络配置
  10. Linux-C 文件操作
  11. 【全网最全】软件测试面试题(含答案),2022最强版,直通大厂
  12. 使用apt更新和升级系统软件
  13. android实现手机号验证码注册
  14. 一文告诉您游戏开发需要学什么
  15. 0x80004005错误代码解决方法,哪种方法快捷有效?
  16. boost | 线程与并发(一)atomic
  17. [Tableau] 销售团队绩效分析与相关策略指导
  18. html实现音乐界面设计,基于HTML5技术的音乐播放器的设计与实现.doc
  19. 社会生活中的著名法则(一)
  20. 汇编语言(32位二进制数的减法、带符号数除法、字符串大小写转换、分段函数求值,含源程序)

热门文章

  1. 基于事件的异步模式概述
  2. 2014年值得关注的10个开源项目(上)
  3. with 语句的妙用
  4. eclipse+Maven安装和配置
  5. 【参数辨识】六关节机械臂动力学参数辨识(上)
  6. linux下c语言版线程池
  7. 基于python爬虫的论文标题_Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】...
  8. cdt规约报文用程序解析_程序员必备的学习笔记《TCP/IP详解(二)》
  9. python采用函数式编程模式-浅谈Python 函数式编程
  10. c语言fopen函数读dat文件,C语言 从a.dat文件读入数据存入b.dat文件里面(以字符形式)...