0
点赞
收藏
分享

微信扫一扫

(面试题)请简述大端字节和小端字节序的概念,设计一个程序来判断当前机器的字节序

简述

大端储存:高位存低地址、低位存高地址;小端存储:高位存高地址、低位存低地址

设计

分析:

从左到右为低地址到高地址

令a为0x00000001,如果是大端则最左边的位数表示的数是00;如果是小端则最左边的那个位数是01

初步代码:

#include<stdio.h>
int main()
{
int a=1;
char* p=(char*)&a;
if(*p==1)
{
printf("小端存储\n");
}
else
{
printf("大端存储\n");
}
return 0;
}

优化:

#include<stdio.h>
int check_sys()
{
int a=1;
char* p=(char*)&a;
if(*p==1)
return 1;
else
return 0;
}
int main()
{
//返回1:小端
//返回0:大端
int ret=check_sys();
if(ret==1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}

优化2:

#include<stdio.h>
int check_sys()
{
int a=1;
char* p=(char*)&a;
if(*p==1)
return *p;
//返回1:小端
//返回0:大端
}

int main()
{
//返回1:小端
//返回0:大端
int ret=check_sys();
if(ret==1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}

优化3:

#include<stdio.h>
int check_sys()
{
int a=1;
return *(char*)&a;
//返回1:小端
//返回0:大端
}

int main()
{
//返回1:小端
//返回0:大端
int ret=check_sys();
if(ret==1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}

举报

相关推荐

0 条评论