|
Нарушитель
|
|
Действенный способ сменить знак + на -16.08.2023, 21:32. Показов 1786. Ответов 27
Метки нет (Все метки)
Есть такой вопрос - допустим есть переменная равная или -1 или 1, она планируется к использованию в расчётах, к частому использованию. Умножать что-то на значение этой переменной, с целью последующей автоматической смены знака действия - не совсем целесообразно. Мне кажется что для таких случаев должно быть что-то предусмотрено. Мне как-то скидывали что-то про булевскую переменную, но я едва-ли найду то, и не помню что именно то было. Подскажите пожалуйста по возможности.
Добавлено через 32 минуты Это имеет смысл, поскольку будет работать внутри цикла с параметром. Параметр будет вычисляться разумеется прежде его запуска, а вот некоторые вектора для его внутренних вычислений нужно будет менять - что и планируется, но умножение на переменную, равную или -1 или 1 это слишком ёмко скомпилируется, в сравнении с нужным простым интервалом значений, равным всего двум - или единице или минус единице. Добавлено через 17 минут В общем сдаётся мне, что суть проблемы уходит корнями в ограничения наложенные непосредственно конкретной двоичной системы..., ... если не архитектуры процессора, ...я так полистал в сети по ассемблеру, и в общих чертах понимаю что это тяжело реализовать имеющимися в нём средствами...над простыми арифметическими операторами действий не предусмотрено. Без умножения тут как-то сложно представляется всё. Но вопрос в силе. Добавлено через 30 минут Впрочем кажется выход есть, точнее хитрость. Проверю - напишу, в сети не один я такой вопрос задавал.
0
|
|
| 16.08.2023, 21:32 | |
|
Ответы с готовыми решениями:
27
Сменить знак
|
|
Модератор
10476 / 5771 / 3412
Регистрация: 17.08.2012
Сообщений: 17,529
|
|
| 19.08.2023, 21:27 | |
|
Hretgir... На всякий случай... Забыл сказать... Для целых чисел это не годится.
Добавлено через 22 минуты Да, и ещё... Скажите, как Вам удаётся понимать всё превратно? Это, конечно, фрагменты кода на ассемблере, да. Куда ж деваться. Только вот я их привёл не для применения в программе, а для того, чтобы показать, в какие команды процессора транслируется тот или иной код на паскале. Каждому ассемблерному оператору соответствует определённая команда процессора (за исключением директив ассемблера). Время выполнения и размер любой ассемблерной команды известны, поэтому по ассемблерному коду, в который транслируется тот или иной текст на паскале, можно абсолютно точно определить время выполнения того или иного участка кода готовой программы и его размер в исполняемом файле. Просмотр результата компиляции - это не самый простой, но самый лучший способ определения эффективности программы. Это верно для любого языка высокого уровня, не только для паскаля. В конце концов, процессор выполняет не паскалевский (или какой-то ещё) текст программы, а ассемблерные инструкции, в которые был преобразован текст программы в процессе компиляции. Understand or don't understand?
0
|
|
|
Нарушитель
|
|||||
| 20.08.2023, 07:38 [ТС] | |||||
|
0
|
|||||
|
Модератор
10476 / 5771 / 3412
Регистрация: 17.08.2012
Сообщений: 17,529
|
|
| 20.08.2023, 11:13 | |
|
С ассемблера надо компилировать, естественно. Это же текст.
Вначале пояснение. А то подозреваю какое-то недопонимание. Последовательность команд процессора = Машинный код. Текст программы на ассемблере - практически машинный код. Ещё раз: каждый ассемблерный оператор соответствует одной команде процессора, в редчайших случаях - двум, но эти случаи известны. Я брал ассемблерный код не с потолка. В лазарусе в меню выберите Вид -> Окна отладки -> Ассемблер, поставьте в паскалевском коде точку останова, запустите программу, сделайте так, чтобы программа остановилась на точке останова, и смотрите в окне Ассемблер, во что компилятор превратит Ваш код. Сначала для справки житным шрифтом будет указан оператор паскаля, на котором Вы поставили точку останова. Ниже него справа будут отображаться операторы ассемблера, слева будет отображаться соответствующий этим операторам машинный код в шестнадцатеричной форме.Ассемблерные команды будут не в стандарте Intel, а в стандарте AT&T, плюс к этому, в операторах асемблера будут указаны не имена переменных, а их адреса. Для публикации я скопировал из окна Ассемблер ассемблерные операторы, изменил синтаксис с AT&T на Intel и подставил вместо адресов переменных их имена. Так что, то, что я привёл - это именно то, во что транслируются указанные паскалевские операторы.
1
|
|
|
Нарушитель
|
|
| 21.08.2023, 20:07 [ТС] | |
|
Я это понял и так, просто хотел это увидеть в паскале, что и попросил, что Вы потом и сделали, но зачем-то пишите что я чего-то недопонимаю. Если я чего-то недопонимаю, то почему Вы делаете то, о чём я именно и прошу?
0
|
|
|
Модератор
10476 / 5771 / 3412
Регистрация: 17.08.2012
Сообщений: 17,529
|
||||
| 22.08.2023, 02:20 | ||||
|
0
|
||||
|
Нарушитель
|
|
| 22.08.2023, 05:25 [ТС] | |
|
Ответ на последний вопрос в сообщении ярко указывает на то, с чьей именно стороны недопонимание. Лишнее подтверждение того что только прямо заданные вопросы всегда достигают цели при любых обстоятельствах. О последней подробности трудно полагать самостоятельно, когда вокруг для одного полный хаос и неразбериха.
Добавлено через 1 час 17 минут Что касается ответа на Ваш уже вытекающий вопрос, то Вы делаете невозможное - даёте мне ответы даже на вопросы, которые я Вам не задавал. Большое Вам и откровенное спасибо.
0
|
|
|
Модератор
10476 / 5771 / 3412
Регистрация: 17.08.2012
Сообщений: 17,529
|
|
| 22.08.2023, 20:56 | |
|
Ну да, немножко я Вас недопонимаю... Есть такое. А как Вас допонять, если Вы ничего конкретного не спрашиваете? Но я всё равно стараюсь хоть чем-то Вам помочь.
0
|
|
|
Нарушитель
|
|
| 22.08.2023, 20:59 [ТС] | |
|
Спасибо.
0
|
|
| 22.08.2023, 20:59 | |
|
Сменить знак у минимального по модулю элемента массива
У всех положительных элементов массива сменить знак
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|