Рассчитать шаг (расстояние в байтах) для циклического перебора массивов основных рядов - PullRequest
0 голосов
/ 06 декабря 2018

Я понимаю основную концепцию шага (расстояние между двумя последовательными обращениями к массиву).Тем не менее, когда мне задают вопрос о том, как обстоят дела с различными типами циклов, обращающихся к одному и тому же массиву, я не уверен в том, какой точный ответ.

Например, я не уверен, как рассчитать доступ к массиву.во вложенных циклах.Вот два примера вопросов, на которых я застрял:

Функция A:

int i, j, k;

for (i = 0; i < MSIZE; i++) {
  for (j = 0; j < MSIZE; j++) {
    for (k = 0; k < MSIZE; k++) {
      sum = sum + (array_a[i][k] * array_b[k][j]);
    }
    array_r[i][j] = sum;
  }
}

* a.Каков шаг (в байтах) обращений к array_a?

b.Каков шаг (в байтах) обращений к array_b? *

Функция B

int i, j, k;

for (i = 0; i < MSIZE; i++) {
  for (k = 0; k < MSIZE; k++) {
    for (j = 0; j < MSIZE; j++) {
      array_r[i][j] = array_r[i][j]+ (array_a[i][k] * array_b[k][j]
    }
  }
}

* a.Каков шаг (в байтах) обращений к array_a?

b.Каков шаг (в байтах) обращений к array_b? *

======================

Willопубликуйте мое понимание вопросов здесь:

В функции A доступ к array_a осуществляется условно (поскольку k является внутренним циклом, к массиву _a обращаются как array_a [i] [k], array_a [i] [k+1], array_a [i] [k + 2] , поэтому полученные элементы всегда находятся рядом друг с другом).array_b переходит от столбца к столбцу (потому что array_b [k] [j], array_b [k + 1] [j], array_b [k + 2] [j] ).

Поэтому ответы для функции A должны быть:

a.Каков шаг (в байтах) обращений к array_a?

Ответ: 4 байта (поскольку целое число обычно составляет 4 байта, что составляет расстояние между двумя последовательными целыми числами)

b.Каков шаг (в байтах) обращений к array_b?

Ответ: MSIZE x 4 байта (Учебник также отметил MSIZE = 500, поэтому он должен быть 2000 байтов)

В функции B доступ к array_a и array_b осуществляется по отдельности.Таким образом, их шаг составляет 4 байта.

Функция B

a.Каков шаг (в байтах) обращений к array_a?

Ответ: 4 байта

b.Каков шаг (в байтах) обращений к array_b?

Ответ: 4 байта

...