码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-04-25 20:12:24      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:大小端   分类   十六进制   数组   十六   进制   时间复杂度   char   直接   


联合体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

标签:大小端   分类   十六进制   数组   十六   进制   时间复杂度   char   直接   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!