![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 685
|
![]()
Есть у меня массив
Код:
Вопрос: При таком вот обращении к элементу массива будет ли двойной сдвиг? Код:
Или в машинных кодах будет сразу обращение к элементу i без сдвигов? |
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,712
|
![]() Цитата:
В машинных кодах нумерация (и всё остальное) идёт так, как написал программист. И не важно, написл он это на ЯВУ и доверил генерацию кода компилятору, или же сам на асме, или прямо в машинных кодах (это если уж совсем паранойя). Что закинешь в индексный регистр SI,DI - то там и будет. И при чём тут "двойной сдвиг" - это совсем из другой оперы. Чего проще: написать фрагмент и посмотреть сгенерированный компилятором код. Ну и беспокойный персонаж же из киножурнала "Хочу всё знать!" ! Это я о ТС Последний раз редактировалось digitalis; 30.05.2024 в 21:33. |
|
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 03.06.2009
Сообщений: 1,871
|
![]()
ну, в тех массивах, которые я создаю - там мне удобней с 1 до N.
а вот тот же Items.Strings у объекта ListBox - там с нуля заполняется список. вот и приходится переходить на нумерацию с нуля...
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,712
|
![]()
Речь не идёт о языках - ТС уверен, что уже прямо в железе, на уровне машинных команд массив привязан к нулевому значению индексау. Хотя, насколько помнит мой склероз - в наборе машинных команд "массив" как понятие не присутствует вообще.
Хотя могу и ошибаться - на РС-шном асме писа'л лет полста тому назад. Последний раз редактировалось digitalis; 01.06.2024 в 12:09. |
![]() |
![]() |
![]() |
#5 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,926
|
![]() |
![]() |
![]() |
![]() |
#6 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,855
|
![]()
На уровне машинных команд используется адресация со смещением либо на константу, либо на значение индексного регистра. И здесь вполне логично выглядит ситуация, что первый по списку элемент массива имеет индекс 0, а не 1, так как смещение относительно начала массива нулевое.
Но в некоторых ЯП приняли считать первым элементом массива элемент с индексом 1, а не 0. Это нелогично с точки зрения внутренней организации памяти, но более логично с точки зрения человека. Ну то есть первый имеет индекс 1, второй - 2 и т.д. E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,712
|
![]() |
![]() |
![]() |
![]() |
#8 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,855
|
![]()
Это понятно, но если у нас индексация идет с 1, то для обращения к любому элементу нам надо уменьшить индекс на 1. Если же индексация с нуля, то обращаемся по прямому индексу без дополнительной операции. Но а как это реализовано, зависит уже от компилятора.
E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 685
|
![]()
Если есть массив
Код:
Код:
Код:
|
![]() |
![]() |
![]() |
#10 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,855
|
![]()
Нет таких причин...
E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Будет ли работать данный код?Что он будет делать? | Виталий2266 | Общие вопросы Delphi | 8 | 18.10.2018 17:26 |
Написать программу, с помощью которой изображение будет разбиваться по пикселям и будет создаваться матрица | andrey4515 | Помощь студентам | 2 | 08.01.2014 18:44 |
Точка с координатами х, у будет находиться в заштрихованной области, написать выражение которое будет истинным для данного рис. | Polina S1 | Помощь студентам | 1 | 31.10.2013 16:38 |