首页 > 试题广场 >

unsigned int a= 0x1234; unsign

[单选题]
unsigned int a = 0x1234;
unsigned char b = *(unsigned char *)&a; 
在 32 位大端模式处理器上变量 b 等于()
  • 0x00
  • 0x12
  • 0x34
  • 0x1234
unsigned int a= 0x1234的32位完全表示是0x00001234,在大端(低地址存储高位)处理器上的存储方式为:
由低地址到高地址依次为(假设低地址为0x4000):
0x4000        0x4001     0x4002      0x4003
00               00           12              34
则&a的值为0x4000, char占一个字节,即b最终所取的值为0x4000地址内存储的内容,故为0x00。

若处理器为小端 (低地址存储低位) 模式,则b的值为0x34。
发表于 2015-08-23 11:29:49 回复(8)
//  答案:0  
//  unsigned int a= 0x1234; 其中int是4字节, 大端存储 ,补齐16进制表示为: 0x00 00 12 34  
//  unsigned char b=*(unsigned char *)&a; 由于大端存储, 所以上述int a变量的最低地址存储的是   
//  十六进制表示中最左边的1字节, 为0x00.  

编辑于 2021-08-19 17:41:26 回复(2)
关于大小端的记忆。这个大端小端起源于《格列佛游记》鸡蛋从小端开始吃,还是从大端开始吃的问题。低字节是鸡蛋的小端,高字节是鸡蛋的大端。低地址表示开始吃。所以大端模式就是指低地址存数高位字节。
发表于 2015-09-13 02:07:16 回复(10)
unsigned int a= 0x1234;,因为大端,所以有可能前面的0没看到,千万不能以为就是这么点,毕竟还有4位没赋值呢int是4字节,也就是32位,而32位里面每4位是一个16,也就是32/4=8,也就是8位数呢,这才显示了4位,要小心,题目就是这样坑人的
发表于 2016-11-14 13:22:49 回复(1)
一时不查,我也错了。总结一下经验,以后不要错了。
总是以0x00001234的方式来写数字,这样与位操作一致,左移为增大(乘2),右移为减小(除2)。
内存从左向右增长,大端(motorola,network)与直觉一致。小端(intel)在一个数字内按字节反转。
即在intel的内存中,上面的数字是0x34120000。

发表于 2016-05-08 12:46:17 回复(0)

//大端存储:高位存储在低地址(高低)

//小端存储:低位存储在低地址( 低低)

发表于 2016-08-18 10:34:39 回复(0)
大端从前往后取,小端从后往前取
发表于 2021-08-24 15:35:19 回复(0)
怎么记住大小端呢?要知道为什么会有Big呢,因为little 不符合正常的写法,所以有了大端法:适应人的理解和逻辑,我们写字时都是从高位向低位写,那么对应内存地址也是从低到高的,所以呢,大端法就是高位在低地址,低位在高地址、
生记硬背总不是好方法。
发表于 2019-08-30 22:50:25 回复(0)
被坑了,0x00001234,因为是大端模式,所以最高位字节到低位字节,也就是从  a的地址  到   a的地址+3  依次存放00 00 12 34,
发表于 2018-01-19 10:20:55 回复(0)
这样记,小端是高高在上(高位在高地址),大端相反的。
发表于 2018-06-11 19:42:19 回复(0)
小端:小地址人微言轻(即小地址+=1便是原数值+=1) 大段:小地址牛逼(即小地址+=1原数值大变化)
发表于 2023-06-30 19:44:18 回复(0)
大端:高字节存低地址
发表于 2022-11-15 20:19:34 回复(0)
考察对大小端问题的掌握
大端的存储方式则为大小大
小端存储方式为小小小
所以0x1234在32位上存储分别为
大端:
00 00 12 34 
小端
34 12 00 00
发表于 2022-03-20 23:17:30 回复(0)
unsigned int a= 0x1234的32位完全表示是0x00001234,在大端(低地址存储高位)处理器上的存储方式为:
由低地址到高地址依次为(假设低地址为0x4000):
0x4000        0x4001     0x4002      0x4003
00               00           12              34
则&a的值为0x4000, char占一个字节,即b最终所取的值为0x4000地址内存储的内容,故为0x00。

若处理器为小端 (低地址存储低位) 模式,则b的值为0x34。
发表于 2020-12-12 21:56:14 回复(0)

int是4字节,高位补0

发表于 2020-02-01 16:58:57 回复(0)
需要补全整个int再反转
发表于 2019-03-14 23:00:10 回复(0)
大端存储的低位为0
发表于 2019-01-04 21:41:22 回复(0)
应注意int类型是32位。
发表于 2018-11-28 21:08:24 回复(0)
大端模式即从地址的左边向右边存储
发表于 2018-08-30 10:18:38 回复(0)
大小端问题
发表于 2018-08-23 20:39:16 回复(0)