鱼C论坛

 找回密码
 立即注册
查看: 2019|回复: 2

请详细说下这个函数怎么的判断大端小端

[复制链接]
发表于 2014-3-29 20:40:32 | 显示全部楼层 |阅读模式
10鱼币
int checkSystem( )
{
union check
{
int i;
char ch;
}c;
c.i = 1;
return (c.ch ==1);
}

我汇编学的很差,麻烦详细点,最好有图,谢谢!

最佳答案

查看完整内容

亲!,其实,大端就是低地址存放低位数,高地址存放低位数,而小端则是高地址存放高位数,低地址存放低位数,下面就是判断大端与小端的一个程序,其中有两个判断的方法,我用宏注释把另外一个注释了,如果想运行一个的话,只要把if中的0改为1就行了,上面也有我的必要的注释和解释,你看一下,看能不能看懂: #include #if(0) int checkCPU(); main() { int j; j = checkCPU(); printf("j = %d\n", j); } i ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-29 20:40:33 | 显示全部楼层
亲!,其实,大端就是低地址存放低位数,高地址存放低位数,而小端则是高地址存放高位数,低地址存放低位数,下面就是判断大端与小端的一个程序,其中有两个判断的方法,我用宏注释把另外一个注释了,如果想运行一个的话,只要把if中的0改为1就行了,上面也有我的必要的注释和解释,你看一下,看能不能看懂:

#include<stdio.h>

#if(0)
int checkCPU();

main()
{
        int j;
        j = checkCPU();

        printf("j = %d\n", j);
}

int checkCPU()
{
        union w
        {
                int a;   //这里占4个字节   32位   
                char b;  //这里占一个字节  8位
        } c;

        c.a = 1;    //一个数字占一个字节,把1赋给整型a;如果是小端的话
                //1就存放在整型a的低地址中

        return(c.b == 1);   //如果b==1的话那就是小端
}
#endif

#if(1)
int main( )
{
        union w    //这个就更好理解了
  {   
             int a;
             char b[sizeof(int)];    //定义一个字符数组
        } c;
        c.a = 1;
  if(c.b[0] == 1)   //也就相当于地位上的数据
          
   printf("这个地址是小端模式\n");

  else if(c.b[sizeof(int)-1] == 1)

   printf("这个地址是大端模式\n");
  return 0;
}
#endif

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-29 22:40:22 | 显示全部楼层
本帖最后由 oggplay 于 2014-3-29 22:49 编辑

看x/16b 0x4006d0下面那一行 最后的0x01然后接着下面的3个0x00,因为int为4个字节。所以能看出我的机器是小端法。

抓图8.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 00:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表