Забавный код в STL

По просьбе наших посетителей, данный материал перенесен с сайта plc4good.org.ua, в связи с полной его потерей. Всё возражения принимаются через форму обратной связи.

plc4good.org.ua/view_post.php?id=54

Разбирая один S7 проект, наткнулся на участок кода, который, несомненно, является, веселым приветом писавшего его программиста, тем, кто будет этот код разбирать. 🙂

Если вы знакомы с программированием в STL, можете оценить юмор писавшего.
В адресах MD10 и MD20 в программе хранятся числа в формате REAL, хотя данный код будет работать с любым форматом.
После выполнения кода, значение в адресах не меняются, то есть, мне кажется, что кроме как вогнать в ступор, другого назначения нет…

      L     MD    10
      L     MD    14
      XOD  
      TAK  
      XOD  
      TAK  
      XOD  
      T     MD    10
      TAK  
      T     MD    14

Нашел, как это работает на Википедии – ru.wikipedia.org/wiki/Алгоритм_обмена_при_помощи_исключающего_ИЛИ

В программировании, обмен при помощи исключающего ИЛИ (англ. Xor swap algorithm, кзор-своп алгоритм) — это алгоритм, который использует операцию исключающего ИЛИ (XOR) для обмена различных значений переменных, имеющих один и тот же тип данных без использования временной переменной. Этот алгоритм работает при помощи свойства симметричного различия, которым обладает XOR: A XOR A = 0 для всех A

Вот еще один пример, подсказанный dan:
таким хитрым способом, зная об операторе ABS, но значения этому не придавая :), можно избавиться от отрицательного знака числа.

    L MD 10
    SQR
    SQRT
    T MD 20

Если вы встречали подобные перлы, пишите в коменты. Думаю, что будет интересно всем.

Комментарии к материалу

Добавлен: Вадим Дата: 2009-07-24

Возводим в квадрат
и из полученного берем квадратный корень

Добавлен: komatic Дата: 2009-08-02

&gt,Возводим в квадрат и из полученого берем квадратный корень
Тоже вариант неплохой, если кинете код в коммент – вставлю в материал…

Добавлен: dan Дата: 2009-08-03

L MD 10
SQR
SQRT
T MD 20

Добавлен: komatic Дата: 2009-08-03

2 dan
спасибо за пример

0 0 голоса

Оцените статью!

guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии