C++面试题

当前位置: 面试问题网 > C++面试题 > 请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1

请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1

int checkCPU()
   {
    {
     union w
     {
      int a;
      char b;
     } c;
     c.a = 1;
     return (c.b == 1);
    }
   }
   剖析:
   嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。采用Little-endian模式的CPU对操作数的存放方式是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。例如,16bit宽的数0×1234在Little-endian模式CPU内存中的存放方式(假设从地址0×4000开始存放)为:
   内存地址 存放内容
   0×4000 0×34
   0×4001 0×12
   而在Big-endian模式CPU内存中的存放方式则为:
   内存地址 存放内容
   0×4000 0×12
   0×4001 0×34
     32bit宽的数0×12345678在Little-endian模式CPU内存中的存放方式(假设从地址0×4000开始存放)为:
   内存地址 存放内容
   0×4000 0×78
   0×4001 0×56
   0×4002 0×34
   0×4003 0×12
   而在Big-endian模式CPU内存中的存放方式则为:
   内存地址 存放内容
   0×4000 0×12
   0×4001 0×34
   0×4002 0×56
   0×4003 0×78
   联合体union的存放顺序是所有成员都从低地址开始存放,面试者的解答利用该特性,轻松地获得了CPU对内存采用Little-endian还是Big-endian模式读写。如果谁能当场给出这个解答,那简直就是一个天才的程序员。

【请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1】相关文章

1. 请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1

2. 写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)

3. 请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值

4. 编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的

5. 写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度

6. 介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?

7. 写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔

8. static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?

9. static函数与普通函数有什么区别

10. 软件测试LoadRunner面试题:How do you identify the performance bottlenecks

本文来源:https://www.mianshiwenti.com/a13206.html

点击展开全部

《请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1》

将本文的Word文档下载到电脑,方便收藏和打印

推荐程度:

进入下载页面

﹝请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1﹞相关内容

其它栏目

也许您还喜欢