首页 > 其他 > 详细

判断机器是big-endian、little-endian

时间:2018-04-25 19:43:45      阅读:183      评论:0      收藏:0      [点我收藏+]

联合体union和大小端(big-endian、little-endian):
下边示范了一种用途,代表四个含义的四个变量,但是可以用一个int来操作,直接int赋值,无论内存访问(指针大小的整数倍,访问才有效率),
还是时间复杂度(一次和四次的区别,而且这四次有三次都是不整齐的地址),都会低一些。



1
#include<stdio.h> 2 union var{ 3 char c[4]; 4 int i; 5 }; 6 7 int main(){ 8 union var data; 9 data.c[0] = 0x04;//因为是char类型,数字不要太大,算算ascii的范围~ 10 data.c[1] = 0x03;//写成16进制为了方便直接打印内存中的值对比 11 data.c[2] = 0x02; 12 data.c[3] = 0x11; 13 //数组中下标低的,地址也低,按地址从低到高,内存内容依次为:04,03,02,11。总共四字节! 14 //而把四个字节作为一个整体(不分类型,直接打印十六进制),应该从内存高地址到低地址看,0x11020304,低位04放在低地址上。 15 printf("%x\n",data.i); 16 }

 

判断机器是big-endian、little-endian

原文:https://www.cnblogs.com/wsw-seu/p/8946605.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!