• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

单片机有时要数据对齐后才可以计算正确的结果是为什么

这是经国 2018-12-14 浏览量:1087

一些库中要字节对齐后,才可以计算,否则结果不对。

单片机有时要数据对齐后才可以计算正确的结果是为什么


0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 一个是由于某些单片机或是芯片内部的总线并不是32位,或是16位的,而有可能是64位的,这时,算法就会一次性传输64位的数据,而你的数据没有对齐时,这时数据的格式与结构就会错乱,运行的计算结果当然也就不对的。
    • 发布于 2018-12-18
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:13
  • 库内部的算法没处理好的话,会依赖数据结构首地址。

    根源还是对齐方式的问题。

    比如 struct  example{

        char  character;

        int  integer;

    }

    struct  example  *var1;

    var1 = 0x100;

    var1->integer  的地址可能是  0x104;也可能是 0x101;

    这个地方就会出错,自己写库代码时候要回避这个问题,并且要考虑通用性,不能依赖编译环境,不能依赖硬件平台,不能依赖写程序的人。

    你用的库是别人写的,也要防止库代码出现这个问题

    最好是编译 kernel  系统  各种库   都使用同一个编译环境同一个编译器


    • 发布于2018-12-15
    • 举报
    • 评论 1
    • 2
    • 0
xdsnet 回复了 robe_zhang :说的很好 回复

  • 这些库应该是效率比较高的库吧,这都是优化过的算法了,对齐时,效率会提高的
    • 发布于2018-12-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 这些库应该是效率比较高的库吧,这都是优化过的算法了,对齐时,效率会提高的
    • 发布于2018-12-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 除非是数值溢出 或者数据类型不对才能算错

    同类型的数是不会出错的

    • 发布于2018-12-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 因为有可能用的是你的内部FPU,如果数据不对齐的话就会导致这种情况
    • 发布于2018-12-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个是因为虽然大多数单片机都是用C语言开发但是单片机内部本身的数据处理机制还是不同的.通过对齐可以从语法上进一步明确程序的结构.
    • 发布于2018-12-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 一个是由于某些单片机或是芯片内部的总线并不是32位,或是16位的,而有可能是64位的,这时,算法就会一次性传输64位的数据,而你的数据没有对齐时,这时数据的格式与结构就会错乱,运行的计算结果当然也就不对的。
    • 发布于2018-12-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 内存对齐是方便编译器,同时为了提高运行效率的,如果要改这个配置,那编译器的配置也要改掉
    • 发布于2018-12-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 这些一般是用在数据占用不到一个内存空间的情况出现的,不进行不对齐的话数据就对不上,计算就会出错了。

    • 发布于2018-12-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 这种为了方便你的数据读取和计算可以整数的读取到你的数据
    • 发布于2019-01-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 字节对齐大部分是方便你的数据读取,这样可以一个字节全部读取出来
    • 发布于2019-01-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 数据的对齐都是用的内存空间,大部分都是要根据你的内存空间来对齐
    • 发布于2019-01-25
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

单片机有时要数据对齐后才可以计算正确的结果是为什么