每日一道面试题--编程判断大小端

  1 //小端数据模式与内存增长方向一致,大端数据模式与内存增长方式相反
  2 //大端 寄存器的低地址存放字节数据的高位
  3 //小端 寄存器的低地址存放字节数据的低位
  4 //联合方法判断 C语言中的数据类型都是从内存的低地址向高地址扩展,小端方式中i所分配的内存那个最小地址中就存着1,其他字节是0.          大端的话则1在i的最高地址字节处存放,char是一个字节,联合类型中的数据成员共享内存,所以强制将char型量c指向i,                            指向的一定是i的最低地址,若c的值是1,数据存储模式是小端,否则就是大端
  5 //直接判断法 将0x12345678赋值给i,若是小端数据存储模式,则按照从低到高的地址,相应位置存放0x78,0x56,0x34,0x12
  6 #include<stdio.h>
  7 //联合(union)方式判断法
  8 typedef union{
  9     int i;
 10     char c;
 11 }my_union;
 12 int checkSystem1(void){
 13     my_union u;
 14     u.i=1; 
 15     return (u.i==u.c);
 16 }
 17 //直接判断法
 18 int checkSystem2(void){
 19     int i=0x12345678;
 20     char *c=&i;
 21     return((c[0]==0x78)&&(c[1]==0x56&&c[2]==0x34&&c[3]==0x12));
 22 }
 23 int main(void){
 24     if(checkSystem1()){
 25         printf("小端\n");
 26     }else{
 27         printf("大端\n");
 28     }
 29     if(checkSystem2()){
 30         printf("小端\n");
 31     }else{
 32         printf("大端\n");
 33     }
 34     return 0;
 35 }
     

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值