问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

2.2 数据存储的宽度和排列方式

发布网友 发布时间:2024-10-24 12:57

我来回答

1个回答

热心网友 时间:2024-10-29 13:46

观察下面的C源程序endian.c,思考以下三个问题。

(1) 上述代码中,变量x、y和z的值都是100。在该程序运行过程中,x、y和z存储的机器数是一样的吗?占用的存储空间也是一样的吗?

(2) 变量d的机器数为0x12345678,为什么在存储器中看到的是“0x78 0x56 0x34 0x12”,好像倒过来的顺序?

(3) 语句“int d=0x12345678;”对应的机器指令为“c7 45 f4 78 56 34 12”,若将该语句修改为“int d=0x22334455;”,能写出其对应的机器指令吗?

数据存储的宽度取决于C语言中数值数据类型的宽度。C语言支持多种格式的整数和浮点数表示,如char、short和int类型。

整数100的十六进制表示为64H,由于x、y、z的数据类型不同,它们在程序运行时占用的存储空间大小不一样,机器数有差别。查看变量x、y和z在运行时存储的内容需要调试执行程序,这需要熟悉汇编指令。

通过反汇编文档,可以找到初始化变量的机器级指令。以变量x、y、z和d的初始化为例,可以看到整型变量的初始化可以通过mov指令实现。mov指令的第一参数表示源数据,第二参数表示目的地址。

理解图1中的反汇编文档,可以查看变量x、y、z、d存储的内容。调试执行指令时,能从这些地址中查看变量的机器数。使用gdb调试工具来调试执行程序,加载程序、设置断点、运行程序,可以观察变量内容的变化。

总结一下:通过程序的调试执行,虽然C源程序中,x、y、z的值都是100,但x、y和z的数据类型不一样,不同的数据类型有不同的数据宽度。d的机器数是0x12345678,它的存储顺序与C语言中的字节顺序相关,即大端或小端方式。

在大端方式中,最高有效字节存放在低地址单元中,最低有效字节存放在高地址单元中。数据d的最高有效字节是0x12,最低有效字节是0x78。在小端方式中,最高有效字节存放在高地址单元中,最低有效字节存放在低地址单元中。

系统之间进行通信时需要考虑数据的排列顺序问题。网络应用程序员必须遵循字节顺序的规则,确保发送方计算机将它的内部表示转换为网络标准,接收方计算机将网络标准转换为自己内部的表示格式。不同计算机系统内部的数据排列顺序不同,大多数Intel兼容的计算机采用小端方式,而IBM和Oracle的大多数计算机采用大端方式。音频、视频和图像等文件格式或处理程序也会涉及字节顺序问题。

在机器指令中,数据的字节顺序同样重要。例如,图1中,x、y、z和d的初始化语句对应的机器指令中,把100的机器数0x64、0x0064、0x0000 00064,以及0x12345678都当作立即数放在指令中,0x0064、0x0000 00064、0x12345678就有字节顺序问题了。若将语句“int d=0x12345678;”修改为“int d=0x22334455;”,对应的机器指令为“C7 45 D4 55 44 33 22”。修改该语句后的反汇编文档如图4所示。

了解数据存储的宽度和存储的排列顺序是重要的基础知识点,大多数应用程序员感觉不到,若不了解这些,则一些问题难以发现。例如,给定一个C程序,可以检测计算机是采用大端方式还是小端方式。总结:正确理解数据存储的宽度和排列方式对于编写高效、兼容的代码至关重要。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 请问下面的这个程序为什么输出结果是78而不是12 为什么把白色花的花茎放在蓝色的墨水里,花朵会变成蓝色? win7系统无故死机~高手请进! 惠普CQ35-108TX驱动下载 移植造血干细胞可以治疗白血病,但移植前必须教学抗排异处理.治疗过程中... 戴尔和联想还有惠普哪个好 求康柏CQ35-222TX XP 所有硬件驱动 如何才能考肚皮舞教练呢 ...还要学习CAD和PS,主要用于学习,所以不要贵的,最好 肚皮舞教练是怎么考的 北京朝阳区大屯社区或者大屯社区附近有夜校吗? win7cf加入游戏后白屏等很久才可以,和朋友玩他们那边都赢了才卡进去,然... 老公的妹妹比我们先生小孩那是他的小孩大还是我的小孩大 今天我电脑win7系统cf登录时白屏未响应 骗取出口退税罪、偷税罪怎么判罚呢 急救!画室美术生的求救! 大屯里社区的中文全称 win7系统前几天玩CF还好好的这几天就玩不了,能登录就是进游戏时显示无... 直销不想干会退钱么? 银行卡被盗刷构成什么罪 叶城县人民医院简介 叶城县有哪些医院 为什么将樱花放到蓝墨水瓶里,樱花就会变成蓝色? 在新疆喀什叶城县人民医院体检,重庆在网上能查到体检报告吗? 一句话赞美牡丹花 28个纯血家族地位排名最高 28个纯血家族地位排名 有关花的唯美短句(花的魅力) 2010年12月日本语能力考试什么时候报名?为何我现在注册的时候会显示... 2010年12月的JLPT日本语能力测试什么时候开始报名? 聊一聊你喜欢高三吗?为什么? 在奉新一中读完高中三年甚至四年,是一种怎样的体验,或者说 2010年12月日本语能力考试N2成绩怎么看 我是个皮肤容易过敏的人,粉底液,BB霜和CC霜这种还有遮瑕笔之类的东西应... ...贵州支教12年的杭州小伙结婚了,是什么样的信念让他坚持支教12年? cf灵狐,会员,曼陀罗,人物经验装备全套,俩经验卡,宝贝,忍者,幽灵之刃包... 音标和自然拼读应该先学哪个 梦见自己的奔驰车换奥迪钥匙 车载监控可以安在室内吗? CF全装一年多少钱!要求,灵狐 永久军刀+狙 手雷包~钳子 防弹套装 高...