利用联合体判断cpu的存储模式

 #include<iostream>
using namespace std;
/*写一个函数判断系统是大端还是小端。若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1.
大端格式:在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中
小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节
联合体union的存放顺序是所有成员都从低地址开始存放。*/


int checkCPU ()
{
 union w
 {
  int a;
  char b;
 }c;
 c.a=1;//如果是大端模式,存储是(低-》高)0001,所以读取c.b时是读了最低一个字节的0,
 //如果是小端模式,存储的时候是(低-》高)1000,所以读取c.b时是读了最低一个字节的1
 return (c.b==1);
}

int main()
{
 cout<<checkCPU()<<endl;
 return 0;
}

 

更喜欢Linux中的方法

static union { char c[4]; unsigned long l; } endian_test = { { 'l', '?', '?', 'b' } };

#define ENDIANNESS ((char)endian_test.l)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值