|
Заблокирован
|
|
Нужна функция Sign без проверки условий09.07.2015, 15:11. Показов 4527. Ответов 40
Метки нет (Все метки)
0
|
|
| 09.07.2015, 15:11 | |
|
Ответы с готовыми решениями:
40
Вычислить Z=(sign(x)+sign(y))∙sign(x+y), где -функция определения знака числа, принимающая значение 1, если число а- положительное; -1, если число
Описать функцию Sign(X) целого типа, возвращающую для вещественного числа X следующие значения и найти значения выражения Sign(A) + Sign(B) |
|
240 / 218 / 46
Регистрация: 17.04.2010
Сообщений: 526
|
|||||||||||
| 11.07.2015, 17:44 | |||||||||||
Сообщение было отмечено castorsky как решение
Решение
Странная постановка задачи... Что значит "без проверки условий"?
Если под этим термином подразумевается проверка значения и переход в зависимости от результата, а задача стоит в отказе от джампа в качестве оптимизации, в таком случае данную функцию можно написать так:
3
|
|||||||||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
|
|||||||
| 11.07.2015, 21:08 | |||||||
|
Добавлено через 14 минут Я предлагаю такой вариант (4 инструкции, не считая загрузки и выгрузки):
http://ideone.com/3TrXQE Перед тем как запускать, можно кликнуть edit, затем кликнуть input и ввести какое-нибудь число. Добавлено через 12 минут eax = eax + eax (при этом carry = 1 для отрицательных eax) ebx = ebx - ebx - carry == -carry eax = -eax (при этом carry = 1 для всех eax кроме 0) ebx = ebx +ebx + carry (-1 + -1 + 1 для отрицательных eax, 0 + 0 + 1 для положительных, 0 + 0 + 0 для нуля)
0
|
|||||||
|
240 / 218 / 46
Регистрация: 17.04.2010
Сообщений: 526
|
||
| 11.07.2015, 23:56 | ||
|
0
|
||
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
| 12.07.2015, 00:29 | |
|
0
|
|
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
|
|||||||||||
| 12.07.2015, 02:34 | |||||||||||
|
Оказывается, там магия в строке:
0
|
|||||||||||
|
240 / 218 / 46
Регистрация: 17.04.2010
Сообщений: 526
|
|||||||
| 12.07.2015, 10:48 | |||||||
1
|
|||||||
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
||||||
| 12.07.2015, 12:29 | ||||||
|
Не по теме: Не понимаю зачем вы полезли в ассемблер Всё просто:
Добавлено через 2 минуты Согласно стандарту языка си сравнения дают результат 0 как ложь или 1 как истина. Других значений быть не может. А вот стандарта паскаля я не знаю.
1
|
||||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
|
||||||||
| 12.07.2015, 12:39 | ||||||||
0
|
||||||||
|
Заблокирован
|
|
| 12.07.2015, 16:42 [ТС] | |
|
проверять на 0 надо, потому что на 0 делить нельзя, а математика правил математики не знает.
возвращаясь к выражению, нужно в первую очередь определить x на линейке, для чего производится операция x+1 и в дальнейшем нужно привести всё это к следующему виду x=(x+1)/x, если результат больше входящих данных, то x положительный, если результат меньше входящих данных, то x отрицательный. но, похоже, это ёмко очень для компьютера. по крайней мере, ёмче обычных сравнений, пусть даже через while
0
|
|
|
240 / 218 / 46
Регистрация: 17.04.2010
Сообщений: 526
|
|||||
| 12.07.2015, 17:18 | |||||
![]() Вот мой первый ответ с примером реализации "кликать сюда", предлагаю найти 10 отличий.
1
|
|||||
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
||
| 12.07.2015, 19:51 | ||
|
0
|
||
|
240 / 218 / 46
Регистрация: 17.04.2010
Сообщений: 526
|
|
| 12.07.2015, 20:11 | |
|
castorsky, не собирался обидеть, просто ответ выглядит как "всё просто, а вы залезли в дебри", вероятно это я торможу...
0
|
|
|
Заблокирован
|
||
| 13.07.2015, 17:13 [ТС] | ||
|
0
|
||
|
240 / 218 / 46
Регистрация: 17.04.2010
Сообщений: 526
|
|||||||||||||||
| 13.07.2015, 18:21 | |||||||||||||||
|
Пример:
0
|
|||||||||||||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
|
|
| 13.07.2015, 19:14 | |
|
Условный переход принципиально отличается от логической операции. Условный переход означает ветвление "потока" исполнения кода. Процессор не может точно знать заранее, какую ветку кода нужно загрузить, а может только строить догадки. И если он ошибётся и загрузит не ту ветку, то "потеряет" несколько десятков тактов (будет простаивать, пока загружается нужная ветка).
Именно по этой причине придумывались алгоритмы для вычисления функций типа signum, max, abs и т.п. без условных переходов.
0
|
|
| 14.07.2015, 11:00 | |||||||
0
|
|||||||
|
Заблокирован
|
|
| 14.07.2015, 15:00 [ТС] | |
|
Да, в общем, компилятор разрабатывали не нубы. Я всё равно программировать буду через циклы, массивы процедур, ну и Sign. Что могу сказать, пусть будет такая проверка условий, но, написание кода в такой манере будет вести меня к накоплению опыта и к систематизации. Условности я откидываю из учёта. Если я хочу создать свою систему и базу знаний (накопление опыта )быстро - я не должен брать в расчёт то, что является условным, так я эффективно достигну цели, а всё что условно - пыль. Пусть в Sign происходит проверка условий, но я не должен брать это в расчёт, пусть будут джампы, но это явление не физическое а архитектурное - значит я не должен это брать в расчёт.
В первую очередь - придерживаться физики, логика - это фаза физических процессов, и работает она, как ни крути, в рамках законов физики, а в законах физики никто ничего не проверяет. Да пусть будет цикл, но это не та проверка условий, пусть проверка условий - но не та система, как у человека.
0
|
|
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
|
||||
| 14.07.2015, 15:03 | ||||
|
Во-первых, большинство приложений не настолько критичны к скорости исполнения. Во-вторых, современные процессоры используют довольно продвинутые алгоритмы предсказания и угадывают очень часто. "Древние" процессоры использовали самый примитивный алгоритм предсказания: предполагали, что условный переход никогда не выполнится. Именно поэтому указания likely/unlikely имели эффект. Современные процессоры используют динамические (времени исполнения) алгоритмы предсказания.
0
|
||||
| 15.07.2015, 08:33 | ||
) есть просто желание сачкануть и увильнуть от реальной работы - не более того
0
|
||
|
Заблокирован
|
||||||
| 15.07.2015, 15:11 [ТС] | ||||||
|
Не знаю, кажется на первый взгляд быстро, если:
псевдокод
Что скажут критики?
0
|
||||||
| 15.07.2015, 15:11 | |
|
Функция проверки числа на деление без остатка на другое число Функция Sign Нужна функция проверки вводимых данных в Access (БД "салон красоты") Проверки различных условий Функция sign (линейный входной сигнал) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|