C语言判断计算机cpu大小端

如何判断一台计算机的CPU是大端还是小字端对齐呢?

那么首先得了解何为大端,何为小端,明确一下概念。

所谓大端模式,是指字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。

小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。

Big-Endian 和 Little-Endian 字节排序  

字节排序                  含义 
Big-Endian    一个Word中的高位的Byte放在内存中这个Word区域的低地址处。 
Little-Endian  一个Word中的低位的Byte放在内存中这个Word区域的低地址处。 
必须注意的是:表中一个Word的长度是16位,一个Byte的长度是8位。如果一个数超过一个Word的长度,必须先按Word分成若干部分,然后每一部分(即每个Word内部)按Big-Endian或者Little-Endian的不同操作来处理字节。

如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为 
                 big-endian      little-endian 
0x0000      0x12                0xcd 
0x0001      0x34               0xab 
0x0002      0xab               0x34 
0x0003      0xcd               0x12 

除了moto的68K系列和dec的sparc是big endian外,常见的cpu都是little endian。ARM同时支持 big和little,实际应用中通常使用little endian,,Intel系列的CPU就是little endian的。

方法一:

bool IsLitte_Endian()

{

     union w{

                    int a;

                    char b;

                 }c;

              c.a=1;

              return (c.b==1);

            }

方法二:

  1. #include<stdio.h>  
  2.   
  3. void main()  
  4. {  
  5.     short s=0x1234;  
  6.     char *p=(char*)&s;  
  7.     printf("%p %0X %0X\n",&s,p[0],p[1]);  
  8. }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值