直播网站app开发,类似于pinterest的设计网站,苏州有名的设计公司,做淘宝客怎么做官方网站大小端的问题在很多面试笔试中都会遇到#xff0c;最直接的考察是#xff0c;笔试的时候#xff0c;让你写一个代码#xff0c;如何确定当前系统是大端还是小端的。什么是大端和小端呢#xff1f;大端#xff1a; 高位字节排放在内存的低地址端#xff0c;低位字节排放在… 大小端的问题在很多面试笔试中都会遇到最直接的考察是笔试的时候让你写一个代码如何确定当前系统是大端还是小端的。什么是大端和小端呢大端 高位字节排放在内存的低地址端低位字节排放在内存的高地址端。CPU对操作数的存放方式是从高字节到低字节小端 低位字节排放在内存的低地址端高位字节排放在内存的高地址端。CPU对操作数的存放方式是从低字节到高字节假设我们的内存是这样的我们要存一个数据 0x44332211到这块内存里面去 如果系统是小端模式的话存储方式如下图如果系统是大端模式的话存储方式如下图好了我们既然知道了大端和小端的存储方式不同那就可以写代码来判断当前系统的存储模式了。方法一#include cstdioint main(){ int i 1; (*(char *)i 1) ? printf(Little-endian\n) : printf(Big-endian\n); return 0;}指针类型转换最后取 char * 指针的值也就是判断 int 低地址的数据是否为1。方法二#include cstdiounion System{ char a; int b;};int main(){ union System s; s.b 1; printf(0x%x\n,s.a); printf(0x%x\n,s.b); if(s.a 1) { printf(Little-endian\n); } else { printf(Big-endian\n); } return 0;}共用体的特点是使用类型最大的那个类型作为共用体的大小所以char a 使用的是 int b的空间大小判断 a的值也就是判断低地址的数据值。方法三#includestdio.hstatic union{ char a[4]; int ul;}endian {{L, ?, ?, B}};#define ENDIAN ((char)endian.ul) int main(){ printf(%cENDIAN\n, ENDIAN); return 0;}宏和字符数组方法四#includestdio.hint main(){ int a 0x44332211; char *b (char *)a; (*b 0x11)?printf(Little-endian\n) : printf(Big-endian\n); return 0;}直接指针操作原理也是取 int 低地址判断里面的数据。总结所有的判断依据都是按照上面的理论来验证的读者们如果对代码有什么疑惑或者问题的请给我留言我也不敢保证自己写的代码一定是正确的几个方法也是参考网上的写法我最喜欢还是用union来实现。如果在面试中突然不知道怎么写我建议还是画个图出来先理解一下这样更有利于写代码。我原来也是上来就想把代码写出来经过这些年的锤炼我明白了原理远比代码来的重要我们学习也不要局限在某种语言上面语言是为了实现某种需求的CCpython等等都只是一种语言而已说白了就是一把刀磨得再锋利的刀没有猪肉来砍也只是用来观赏而已。周末愉快~共勉~—————END—————扫码或长按关注回复「 加群 」进入技术群聊