判断CPU数据存储格式的类型

程序中采用两种方法来判断当前CPU的数据存储格式的类型:

  • 第一种方法是直接判断一个2字节的short整形变量1(0x0001)在内存中的存储方式,若是Little-Endian方式存储的,则内存低字节存放数据低位01,高字节存放数据高位00,所以只要判断低字节是否为1,若为1则为Little-Endian(小尾端)类型的CPU,反之则为Big-Endian 类型的CPU。
  • 第二种方法用一个定义联合类型的变量,包含一个short'整型和一个字符型的成员。由于联合类型的数据成员的存放总是从内存低地址开始,且所有数据成员共用一片内存空间,这片空间的大小是成员中数据类型长度最大的那个值。那么初始化第一个整型成员为1后,访问第二个字符类型的成员时,实际是访问ige字节该片内存空间的第一字节,所以只要判断该字节的值是否为1即可。

  程序清单如下:

/* This Program is used to get the data-store type of the CPU.
 * Author: Denven, 2007-10-26
 */
void Endian1(void)
{
    short int a = 0x0001;
    char  *p = (char *)&a; /* memory address: low high
                              little endian :  01  00
                              big endian is :  00  01
                            */
    (p[0]==1)?puts("Little Endian CPU."):puts("Big Endian CPU.");
}

void Endian2(void)
{
    union
    {                       /*memory assign for union variable c*/
        short int a;        /*memory address:  | low    high  | */
        char      b;        /*                 |-- a(2bytes)--| */
    }c;                     /*                 |-- b --|------| */
    c.a = 1;                /*little endian is:|  0 1    0 0  | */
                            /*big endian is   :|  0 0    0 1  | */
    (c.b==1)?puts("Little Endian CPU."):puts("Big Endian CPU.");
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值