关于用C和java读同一个二进制文件却结果不同的问题

moseyy 2016-09-07 05:34:40
直接上结果,如图所示:

图上分别是用C(上)和用java(下)读取同一个文件的结果,既输出了二进制码,括号中也输出了相对应的int或float值,两者的二进制码是相同的,但是int或float值却是不同的。已知C的结果是正确的(文件是用C写的,写的值和现在输出的值是一样的),所以必然是java的结果哪儿有问题。
然后把我的code也放上来:

左边是C,右边是java,code应该没有问题。所以现在真的不知道问题出在哪儿?
...全文
283 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
moseyy 2016-09-07
  • 打赏
  • 举报
回复
存储都是4位,这没问题。问题在于存储的顺序,我检查了一下,java的存储是顺序的,而C的存储是反序的,比如一个数16909320(=2^24+2^27+2^10+2^3,二进制为00000001 00000010 00000100 00001000),在java中就是按这个顺序存储的,但是在C中却是反序存储的(00001000 00000100 00000010 00000001),所以java写的文件C出来就是134480385(=2^27+2^18+2^9+2^0)。这就是真正的原因。
unauthorized401 2016-09-07
  • 打赏
  • 举报
回复
这个应该是c和java中关于int和float的存储位数不同的原因吧。
内容概要:本文详细介绍了一个基于MATLAB平台实现的极端梯度提升回归(XGBR)模型在光伏功率预测中的应用项目。项目围绕提高预测精度、增强电网调度能力、支持智慧能源管理等目标,系统阐述了从数据采集、预处理、特征工程到XGBR模型设计、参数优化、预测分析与可视化的完整技术流程。针对天气多变、数据噪声、高维多源融合、设备老化、时序漂移等实际挑战,提出了一系列针对性解决方案,并强调模型的可解释性与自适应优化能力。项目还展示了部分MATLAB代码示例,具备较强的工程实践指导意义。; 适合人群:具备一定机器学习基础和MATLAB编程经验,从事新能源预测、电力系统调度、智能算法开发等相关领域的科研人员、工程师及高校研究生。; 使用场景及目标:①应用于光伏电站功率的短期与中长期预测,提升新能源并网稳定性;②为电网调度、能源管理、市场化交易提供高精度数据支持;③学习XGBR在实际工程中的建模流程、参数调优与多模块系统集成方法; 阅建议:建议结合MATLAB代码实践,重点关注数据预处理、特征构造与模型自适应优化环节,同时利用可视化工具深入理解模型输出与特征重要性,提升对XGBR在时序预测任务中应用的理解与实战能力。

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧