判断大端小端模式

代码如下:

big_little_endian.c

 1 #include <stdio.h>
 2
 3 #define BIG_ENDIAN     1
 4 #define LITTEL_ENDIAN  0
 5
 6 int big_littel_endian(void)
 7 {
 8     union num
 9     {
10         int a;
11         char b[4];
12     }c;
13
14     c.a = 0x1234;
15
16     if(c.b[0] == 0x34)
17     {
18         return LITTEL_ENDIAN;
19     }
20     else
21     {
22         return BIG_ENDIAN;
23     }
24
25 }
26
27 int main()
28 {
29     int cpu;
30
31     cpu = big_littel_endian();
32
33     if(cpu == LITTEL_ENDIAN)
34         printf("cpu is Little_endian.\n");
35     else
36         printf("cpu is Big_endian.\n");
37 }

在Linux下编译:

gcc -o big_little_endian big_little_endian.c

运行:

./big_little_endian

输出结果:

cpu is Little_endian.

时间: 2024-10-18 17:23:29

判断大端小端模式的相关文章

如何判断大端小端?

一.最简单的做法: 参考(深入理解计算机系统中文版第二版,P28,show_bytes) 转化成usigned char*的byte_pointer: 然后遍历输出每个字节的值,即可判断. 输入可以是任意一个数. 类似于:http://blog.csdn.net/yuucyf/article/details/7193148 二.利用联合 由于联合是共享地址的,所以可以采用如下方式: 1 #include <iostream> 2 using namespace std; 3 4 union 5

大端小端模式

转载:http://bbs.chinaunix.net/thread-4065857-1-1.html 一.字节顺序只是对内置数据类型而言. 例如对于一整型(int,int 是内置数据类型)数,比如 0x123456 大端模式:低地址 ----------> 高地址0x12 | 0x34 | 0x56 小端模式:低地址 ----------> 高地址0x56 | 0x34 | 0x12 但对于字符串就没有大端和小端的说法(虽然字符是内置数据类型,但字符串不是),比如 “123456”,不管系统

[UNP]判断大端小端

1 #include "unp.h" 2 3 int 4 main(int argc, char **argv) 5 { 6 union { 7 short s; 8 char c[sizeof(short)]; 9 } un; 10 11 un.s = 0x0102; 12 printf("%s: ", CPU_VENDOR_OS); 13 if (sizeof(short) == 2) { 14 if (un.c[0] == 1 && un.c[

CRC 自动判断大端 小端

/* aos_crc64.c -- compute CRC-64 * Copyright (C) 2013 Mark Adler * Version 1.4 16 Dec 2013 Mark Adler */ /* This software is provided 'as-is', without any express or implied warranty. In no event will the author be held liable for any damages arising

java内存,大端小端判断

一,简介 在计算机系统中,规定:每个地址单元都会对应一个字节(8个bit),但是,在c语言中, 除了有一个字节(8个bit)的char,也有两个字节(16个bit)的short, 也有四个字节(32个bit)的long(在不同的编译器下可能不同).对于16位或者32位的处理器, 即就是大于8位的处理器,由于寄存器的宽度大于一个字节, 那么就存在如何将一个多字节的变量的数据如何存放的问题——所以,就有了大小端之分. 大端模式:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址端

【转】如何判断CPU是大端还是小端模式

原文网址:http://blog.csdn.net/ysdaniel/article/details/6617458 如何判断CPU是大端还是小端模式 http://blog.sina.com.cn/s/blog_66a61f310100i7m0.html MSB:Most Significant Bit  ------- 最高有效位    LSB:Least Significant Bit ------- 最低有效位 大端模式(big-edian) big-endian:MSB存放在最低端的地

大端小端的判断

大端小端的判断 1.联合体(共用体) union U { char s[9]; int n; double d; }; 联合体和结构体的定义和使用是一样的,就不详细的赘述.必须要记住:联合体所有的成员变量都是共享同一块内存的,从相同的起始地址进行赋值.也就是给联合体的一个成员变量赋值的时候,就会改变其他成员变量的值. 联合体的大小: 对于计算一个联合体的大小(共用体)来说,不同的编译器计算的结果是不同的. VS2013: union U { char s[9]; int n; double d;

详解大端模式和小端模式

详解大端模式和小端模式 原文地址:http://blog.csdn.net/ce123_zhouwei/article/details/6971544 一.大端模式和小端模式的起源 关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的<格利佛游记>:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战.战争的原因:大家都知道,吃鸡蛋的时候,原始 的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,

大端模式和小端模式的区别

大端模式和小端模式的区别 在C语言中除了8位的char型之外,还有16位的short型,32位的long型(要看具体的编译器),对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着如何将多个字节安排的问题.因此就导致了大端存储模式和小端存储模式. 大端模式: 字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中. 小端模式: 与大端存储模式相反,在小端存储模式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节. 例如,16位宽