zoukankan      html  css  js  c++  java
  • C-order/Fortran-order(Row-/Column-major order)

    1. row-major / column-major order

    无论是行序优先还是列序优先,其实在计算机计算中,指的都是在线性空间(linear storage,如 RAM,也即连续内存存储 contiguous in ,memory)存储多维数组(multidimensional arrays)的方式。


    这里写图片描述

    数据的分布方式(data layout)对于在不同编程语言间正确地传递多维数组是十分关键的。

    2. 地址计算

    这里我们将多维数组的概念泛化为更高维。对于 d 维数组 N1×N2××Nd,该数组中的一个元素为 (n1,n2,,nd)(其中 nk[0,Nk1],从 0 开始计数),其在内存中的地址应当为:

    • 行序(row-major order):对于行序,最后一维是连续的,

      nd+Nd(nd1+Nd1(nd2+Nd2(+N2n1)))=k=1d=k+1dNnk

    • 列序(column-major order):对于列序,第一维是连续的,

      n1+N1(n2+N2(n3+N3(+Nd1nd))))=k=1d(=1k1N)nk

    references

  • 相关阅读:
    C语言II作业01
    C语言寒假大作战04
    C语言寒假大作战03
    C语言寒假大作战02
    C语言寒假大作战01
    C语言ll作业01
    C语言寒假大作战04
    C语言寒假大作战03
    C语言寒假大作战02
    C语言寒假大作战01
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9422240.html
Copyright © 2011-2022 走看看