美文网首页
判断机器大小端

判断机器大小端

作者: new_liziang | 来源:发表于2019-04-05 11:45 被阅读0次

大小端定义

大端:是指数据的高字节保存在内存的低地址中
小端:是指数据的低字节保存在内存的低地址中

思路:

定义一个拥有一个char,int类型的联合体

union
{    
    char ch; 
    int integer;
}un;
当系统为大端时,这个联合体的内存布局为
高地址----------->低地址
char: xx
int:  xx xx xx xx

当系统为小端时,这个联合体的内存布局为
char:          xx
int:  xx xx xx xx

由于联合体共享内存,所以当char类型的成员的地址为int类型成员的低地
址时,系统为小端,所以当char类型的成员的地址为int类型成员的高地址
时,系统为大端。
[kiosk@foundation36 ~]$ vim test.c
  1 #include <stdio.h>
  2 
  3 union
  4 {
  5     char ch;
  6     int integer;
  7 }un;
  8 
  9 int main()
 10 {
 11     un.integer = 0x12345678;
 12     if(un.ch == 0x12)
 13     {
 14         printf("big\n");
 15     }
 16     else
 17     {
 18         printf("short\n");
 19     }
 20     return 0;
 21 }

[kiosk@foundation36 ~]$ gcc -o test test.c
[kiosk@foundation36 ~]$ ./test
short

第二种方法

#include<stdio.h>
union var{
        char c[4];
        int i;
};
int main(){
        union var data;
        data.c[0] = 0x04;//因为是char类型,数字不要太大,算算ascii的范围~
        data.c[1] = 0x03;//写成16进制为了方便直接打印内存中的值对比
        data.c[2] = 0x02;
        data.c[3] = 0x11;//数组中下标低的,地址也低,按地址从低到高,内存内容依次为:04,03,02,11。总共四字节!
//而把四个字节作为一个整体(不分类型,直接打印十六进制),应该从内存高地址到低地址看,0x11020304,低位04放在低地址上。
        printf("%x\n",data.i);

}

相关文章

  • 判断机器大小端

    大小端定义 大端:是指数据的高字节保存在内存的低地址中小端:是指数据的低字节保存在内存的低地址中 思路: 定义一个...

  • C语言判断机器CPU大小端模式的两种方法

    C语言判断机器CPU大小端模式的两种方法 本文介绍使用C语言编写程序判断机器CPU大小端模式的两种方法。 第一种方...

  • 判断机器大小端的方法

      最近有段时间都没有写些文章总结了,主要是这段时间还是以学习为主,学了信息系统项目管理师的相关内容,准备今年的1...

  • 二进制文件IO与大小端

    1. 判断本机的大小端 C语言简单判断本地机器是大端还是小端原文链接 指针的威力可见一斑! 取test地址,并强制...

  • 9-malloc练习-大小端

    malloc 练习 : 大小端判断 :

  • C: 判断大小端

    大端与小端 大端与小端指的是多字节的数值在内存中的存储形式,数值的起始存储在内存的高序地址则为大端,反之为小端: ...

  • 系统大小端判断

  • 大小端判断方法和转换

    1.什么是大小端? 这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 8bi...

  • 判断大小端的几种方法

    .1、使用联合体判断方法 bool check() { unionu{ int a; char b; ...

  • iOS简单判断大小端字节序

    大小端定义 大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的...

网友评论

      本文标题:判断机器大小端

      本文链接:https://www.haomeiwen.com/subject/kiuhiqtx.html