首页 > 试题广场 >

在x86的机器上,int a=0xabcd1234 char

[单选题]
x86的机器上执行:
int a = 0xabcd1234; 
char b = ((char*)&a)[0];
请问b是多少
  • 0xa
  • 0x4
  • 0xab
  • 0x34
推荐
D。
x86是小端存储,即高位存储在高地址,低位存储在低地址。
int a = 0xabcd1234;
内存中 ab  cd  12   34,b作为一个char,右边表达式指针指向为0x34.
            高  -->      低
编辑于 2016-04-27 10:48:40 回复(9)
主要是因为x86是小端存储,即高位存储在高地址,低位存储在低地址。x86位16位系统,内存中是2字节对齐。
3 4
1 2
c d
a b
以上为内存中由低到高依次分布。
编辑于 2015-09-15 17:16:43 回复(3)

重点在于X86是小端机器   char只能读取int的一个字节,在加上16进制
在小端机上是低位 0x34
大端机上读取的是高位0xab
发表于 2015-08-07 19:54:13 回复(5)
小端存储:
内存 低->高
0x34| 0x12| 0xcd| 0xab
大端存储:
内存 低->高
0xab| 0xcd| 0x12| 0x34
x86是小端存储,char b是第一个内存区域,所以是0x34
发表于 2017-04-02 17:04:02 回复(0)
记住小端模式与正常读写顺序相反就够了
发表于 2016-06-10 09:24:01 回复(0)
×86是32位系统,x86是小端模式,0x ab cd 12 34 高位存储于高地址,低位存储于低地址,题目中int a = 0xabcd1234; int a是16进制的数据,考虑转换成2进制,就是每个字母a、b、c、d、1、2、3、4转换成4、4、4、4、4、4、4、4共32位数据,
(char*)&a是一个取a的地址,指向类型由int* 转换成为char* ,指向的是一个字节也就是8位的数据,因为指向的是小端,低地址的数据,故倒着数一下,0011、0100两个二进制(每个4位)→两个个16位数,3、4,因此结果就是0x34.若有不足之处,欢迎大家商量解决
发表于 2022-02-26 09:51:59 回复(4)
这道题在c++中应该会输出4吧,毕竟不经过特殊处理不会输出ascll码。再说没有特殊说明一般都会认为值是ascll所表示的东西而不是ascll码本身吧。
所以我觉得答案应该为0x34所表示的值,即4
编辑于 2015-08-10 22:29:04 回复(1)
D。 x86是小端存储,即高位存储在高地址,低位存储在低地址。 int a = 0xabcd1234; 内存中 ab  cd  12   34,b作为一个char,右边表达式指针指向为0x34.             高  -->      低
发表于 2019-10-17 18:17:21 回复(0)
x86是小端模式,dsp是小端模式,大部分arm是小端模式,也些可调大端或者小端模式
发表于 2019-07-30 07:37:07 回复(0)
啥头像

为什么我在机器上的运行结果是4呢,不解,请大家帮忙解释解释?
发表于 2015-08-10 15:02:27 回复(2)
大端模式:地址的增长顺序与值的增长顺序相反; 小端模式:地址的增长顺序与值的增长顺序相同
发表于 2018-04-05 15:34:56 回复(0)
x86是小端存储,即从低位到高位。同时x86系统也是32位操作系统,而一个int的大小是由操作系统的一个字长决定,故此题中int为4字节(c语言中规定int位2字节)。
发表于 2018-03-27 10:52:22 回复(0)
在vs中输出4,不信试试
发表于 2015-08-23 16:16:52 回复(3)
两个要点: ①:&a,因为a数据是int型,读取内存方式是 int * ,一次读4字节。此处强制类型转换为 char * ,使其读取内存方式变为:一次性读取一个字节。 ②:小端存储,先存低位数据,0xabcd1234; 先存 0x 34 ;。
编辑于 2024-04-12 07:54:52 回复(0)
内存的读写也是从低地址开始读的,从低到高
编辑于 2023-12-22 10:13:07 回复(0)
小端存储从后往前取,并且在32位系统里一个地址存两个16进制的数字,所以字符串的第一个地址里存的就是最后两个吗?
发表于 2022-08-29 21:48:51 回复(0)
x86是小端存储,地址小的地方存末端
发表于 2022-02-26 09:46:27 回复(0)
小端模式
发表于 2022-01-31 17:36:22 回复(0)
x86为小端存储,高位存储在高地址
发表于 2021-08-06 09:13:29 回复(0)
4作为字符存储,字符4的十六进制是0x34.
发表于 2019-11-07 09:00:02 回复(0)
小端读取与我们读数据相反
发表于 2019-02-27 00:02:39 回复(0)