以一道union面试题说明大端小端和内存高位低位
来源:互联网 发布:香水时代淘宝店 正品吗 编辑:程序博客网 时间:2024/04/29 07:53
首先我们来看一道题:
union number{
int value;char str[2];
};
number test;
test.value = 0;
test.str[0] = 10;
test.str[1] = 1;
printf("%d", test.value);
请问输出是多少?
一步步来求解,union是共享内存的,所以当前test占用4个字节。
1:test.value = 0;的时候,四个字节都是0,
2:test.str[0] = 10;这时内存编程如下图:
3:test.str[1] = 1;这时内存编程如下图:
4:把内存中的值转成了int类型输出。
最后一步就涉及到大端小端、内存高低和数据高低位问题,内存高地位在2、3步图片中可以看清楚了,下来了解下大端小端的概念和数据高地位概念:
数据高地位:
大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中。
小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。
5:结合2、3步的内存高地位,第四部的数据高低位和大小端模式概念,可以得到如下图的值:
所以大端下输出:2561
小端下输出:266
另外说一句,一般我们用的x86架构cpu都是小端。
0 0
- 以一道union面试题说明大端小端和内存高位低位
- 大端(高位先在低内存地址位置存储),小端(低位先在低内存地址位置存储)
- 大端(高位在低地址)--小端(低位在低地址)
- 大端(高位在低地址)--小端(低位在低地址)
- 大端小端区别、Union和Struct的内存分配
- 大端小端区别、Union和Struct的内存分配
- 大端小端区别、Union和Struct的内存分配
- 高位优先和低位优先
- 大端小端区别、Union和Struct的内存分配、对齐方式
- C struct内存对齐 union的大端小端
- 大端格式和小端格式 和union
- 字符/数字取高位和低位
- char型字节取高位和低位
- 大端模式和小端模式解析(包含面试题)
- C面试题(判断大端小端)
- C面试题(判断大端小端)
- 大端与小端的原因[面试题]
- C面试题(判断大端小端)
- 16jinzhi
- 2进制
- oracle函数
- 关于json
- 十进制换二进制
- 以一道union面试题说明大端小端和内存高位低位
- 微信公众平台
- iOS开发多线程篇—多线程简单介绍
- 一文读懂机器学习
- 二进制数转化
- 当孩子伸手向你要钱时,千万不能这样做,一辈子的阴影。
- 优秀程序员的十个习惯
- 十进制转化为十六进制
- SearchView基本功能用法