判断cpu大小端模式(c++代码实现)

     首先来了解一下大小端模式。

          大端模式:高位对应低地址,低位对应高地址 ;换而言之,就是数字的高位存放在内存的低址地,低位存放在内存的高地址

          小端模式:高位对应高地址,低位对应低地址 ;即数字的高位存放在内存的高址地,低位存放在内存的低地址

          如下图,我们要存储0x1234这个数,那么大小端模式下的存放分别如下所示,箭头方向是地址增大方向。
在这里插入图片描述

Judging_the_big_end_mode(void)

{

     int a  =1;

    char  b =  *(char*)(&a);

    return   b;

}

          解释一下代码,int型占四个字节,我们假设现在cpu是大端模式,则a=0000 0000 0000 0001(存放地址分别为2000h 2001h 2002h 2003h四个字节),则&a取到的地址是2000h,那么b就等于2000h中存放的值0000(也就是十进制的0)

          如果我们假设现在cpu是小端模式,则a=0001 0000 0000 0000(存放地址分别为2000h 2001h 2002h 2003h四个字节),则&a取到的地址是2000h,那么b就等于2000h中存放的值0001(也就是十进制的1)

所以我们只要看b是一个什么值就可以判断cpu的大小端模式了。

posted on 2021-06-11 09:33  雾恋过往  阅读(486)  评论(0编辑  收藏  举报

Live2D